Flutter - 如何在材质应用程序中调用多个构建器项目?

Muh*_*nus 9 builder material-design flutter

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      builder: BotToastInit(), //1. call BotToastInit
      navigatorObservers: [BotToastNavigatorObserver()],
      debugShowCheckedModeBanner: false,
      title: 'Pak Coins',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MySplashScreen(),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的 MyApp 类,想要调用 2 个构建器

  1. BotToastInit(),
  2. EasyLoading.init() 我如何调用这两个?建造者://这里,

osa*_*xma 20

builder参数必须返回一个小部件。如果您喜欢进行初始化或返回两个小部件,则必须将它们自己嵌套在builder

builder: (context, child) {
    // do your initialization here
    child = EasyLoading.init();  // assuming this is returning a widget
    child = botToastBuilder(context,child);
    return child;
  }
Run Code Online (Sandbox Code Playgroud)

如果您查看bot_toast 包的入门指南,他们在步骤 3 中有一个示例。

更新:或者利用 BotToast 或 EasyLoading 提供的构建器方法,例如:

builder: EasyLoading.init(builder: BotToastInit()),
Run Code Online (Sandbox Code Playgroud)

  • 更新的解决方案拯救了我的一天。 (2认同)

Mos*_*riy 17

这是解决方案。

我要调用的构建项是:DevicePreview.appBuilderBotToastInit()EasyLoading.init()

所以解决方案如下:

 builder: (context, myWidget){
             myWidget = DevicePreview.appBuilder(context, myWidget);
             myWidget = BotToastInit()(context, myWidget);
             myWidget = EasyLoading.init()(context,myWidget);
             return myWidget;
           },
Run Code Online (Sandbox Code Playgroud)

  • EasyLoading.init()(上下文,myWidget); 拯救我的一天。 (2认同)