【问题标题】:Flutter state management颤振状态管理
【发布时间】:2020-06-12 03:34:12
【问题描述】:

如果我只想要一个小部件并且它的孩子有特定的提供者而不是整个应用程序,我该如何实现?

// not this
  void main() {
     runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider(create: (context) => CartModel()),
        Provider(create: (context) => SomeOtherClass()),
      ],
      child: MyApp(),
       ),
     );
   }

【问题讨论】:

    标签: flutter state-management


    【解决方案1】:

    您只需要将MultiProvider 包装到您想要的小部件。 像这样:

    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: MultiProvider(
            providers: [Provider(create: (context) => TestModel(index: 1)),],
            child: MyHomePage(title: 'Flutter Demo Home Page')
          ),
        );
      }
    }
    

    【讨论】:

      【解决方案2】:

      你可以用提供者包装这个小部件,可以用作

      final _myProvider=Provider.of<MyProvider>(context, listen: false);
      

      或使用

      Consumer<MyProvider>(
       builder: (BuildContext context, MyProvider myProvider, Widget child) {
         return child;
      ),
      

      【讨论】:

        猜你喜欢
        • 2023-01-31
        • 2021-04-28
        • 2020-10-29
        • 1970-01-01
        • 1970-01-01
        • 2021-05-26
        • 1970-01-01
        • 2021-11-19
        • 2021-05-23
        相关资源
        最近更新 更多