【问题标题】:Flutter getx controller get the current page contextFlutter getx 控制器获取当前页面上下文
【发布时间】:2021-12-03 09:06:27
【问题描述】:

我想使用上下文在 getxcontroller 方法中显示来自酷警报的自定义对话框。 我创建了以下控制器

class HomePageController extends GetxController {
 
   @override
   void onInit() {
     super.onInit();
     getData();
   }

   void getData(){
    //perform http request here 
     //show cool alert 

     CoolAlert.show(
      context: context,  //here needs the build context
      type: CoolAlertType.success
      );
   }

}

我在我的无状态小部件中使用这个控制器,比如

class HomePage extends StatelessWidget {
   HomePage({ Key? key }) : super(key: key);

   final _c = Get.find<HomePageController>();


    @override
    Widget build(BuildContext context) {
        return Container(
  
          );
    }
 }

如何在控制器中获取当前主页 BuildContext 以显示酷警报。

【问题讨论】:

  • 如果要访问当前屏幕上下文,请在 HomePage 上初始化 HomePageController
  • 你找到解决办法了吗?
  • // 可以在这里获取上下文 BuildContext? context = Get.context;

标签: flutter flutter-getx


【解决方案1】:

如果您想显示一个对话框或快餐栏,需要将上下文作为必需的 agument。您可以使用Get.dialog()Get.snackbar,其功能与showDialogshowSnackbar 相同,但*without* 上下文或脚手架

【讨论】:

    【解决方案2】:

    您需要在主页上初始化控制器,如下所示

    class HomePage extends StatelessWidget {
       HomePage({ Key? key }) : super(key: key);
    
       final _c = Get.put(HomePageController())..getData(context);
    
    
        @override
        Widget build(BuildContext context) {
            return Container(
      
              );
        }
     }
    

    这将调用 getData 函数并删除 onInit 函数并在 getData 函数中传递 Buildcontext 上下文参数。

    【讨论】:

    • 如何将上下文传递给控制器​​?
    • @Geoff 我已经改变了我的答案,检查一下。
    猜你喜欢
    • 2020-04-22
    • 2021-10-01
    • 2015-04-04
    • 2012-12-02
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多