在 Flutter 中自动加载应用程序屏幕时显示模态

时间:2021-06-22 12:35:59

标签: flutter

我使用 Modal_bottom_sheet 2.0.0 制作了一个模态。我有一些代码:

                GestureDetector(
                    child: Icon(Icons.arrow_upward),
                    onTap: () => {
                          CupertinoScaffold.showCupertinoModalBottomSheet(
                            expand: true,
                            context: context,
                            backgroundColor: Colors.transparent,
                            builder: (context) => Stack(
                              children: <Widget>[
                                MyWidget(),
                              ],
                            ),
                          ),
                        }),

上面的代码是渲染一个 Icon(Icons.arrow_upward)。当用户 onTap 在此图标上时,我的 Cupertino BottomSheet 将调用。

但现在我希望 Modal 在没有 onTap 的情况下自动调用。

我在下面尝试了这段代码,但它不起作用

  void initState() {
    super.initState();
    setState(() {
      CupertinoScaffold.showCupertinoModalBottomSheet(
        expand: true,
        context: context,
        backgroundColor: Colors.transparent,
        builder: (context) => Stack(
          children: <Widget>[
            MyWidget(),        
          ],
        ),
      );
    });
  }

如何在图标上没有 onTap() 的情况下显示 Cupertino BottomSheet?

1 个答案:

答案 0 :(得分:0)

您不需要将 cupertinoShowMode 方法包装在 SetState 函数中。相反,您可以创建一个显示底部工作表的函数,并从 initState 方法调用此函数。

displaySheet 函数内调用 initState 方法。

void initState() {
   super.initState();
   
    WidgetsBinding.instance.addPostFrameCallback((_) {
     displaySheet(); 
   });
  
}
void displaySheet(){
 CupertinoScaffold.showCupertinoModalBottomSheet(
        expand: true,
        context: context,
        backgroundColor: Colors.transparent,
        builder: (context) => Stack(
          children: <Widget>[
            MyWidget(),        
          ],
        ),
      )
}