Flutter Provider:为什么像tihis那样调用Provider.of <Widget>(context)时会发生此错误:

布赖恩

我是新手,我正在测试Provider,无法弄清楚为什么这样做(通过工作,我的意思是它在应用栏中显示了一个列表):

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider<Data>(
      builder: (context)=> Data(),
        child: MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: CustomText(),
          ),
        ),
      ),
    );
  }
}

使用CustomText类几乎不执行任何操作:

class CustomText extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return Text(Provider.of<Data>(context).texts.tostring());
  }
}

但这又引发了一个-在此MyApp小部件上方找不到正确的提供程序-错误:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider<Data>(
      builder: (context)=> Data(),
        child: MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: Text(Provider.of<Data>(context).texts.toString()),
          ),
        ),
      ),
    );
  }
}

数据类为:

class Data with ChangeNotifier{
  List<String> _texts = ['Text 1', 'Text 2', 'Text 3', 'Text 4',];

  get texts {
    return _texts;
  }

  void deleteText(int index){
    this._texts.removeAt(index);
    notifyListeners();
  }

  void addText(String text){
    this._texts.add(text);
  notifyListeners();
  }
}

我只是看不出有什么区别或为什么重要。该代码不应该等效吗?任何见解将不胜感激。

马拉特

不同的是,在CustomText情况下,context是从作为其父插件MyApp,而在第二种情况下,context是从MyApp父级。由于您的Provider是在内部实现的MyApp,因此,如果您使用MyApp的父级context(第二种情况),它将找不到该提供商

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在尝试设置Windows 8设置时会发生此无关的错误?

来自分类Dev

为什么在使用repaint()而不是与getParent()。repaint()一起使用时会发生此Swing错误?

来自分类Dev

为什么在使用repaint()而不是与getParent()。repaint()一起使用时会发生此Swing错误?

来自分类Dev

为什么在文件中写入csv时会发生错误?

来自分类Dev

linux中出现段错误时会发生什么

来自分类Dev

无限本地错误:为什么在函数中重新定义全局变量而不是仅引用全局变量时会发生此错误?

来自分类Dev

为什么在c中会发生此错误?

来自分类Dev

为什么会发生此编译器错误?

来自分类Dev

为什么会发生此python数字错误?

来自分类Dev

Flutter GoogleMap Provider Context问题

来自分类Dev

暂停时会发生什么?

来自分类Dev

为什么我尝试复制* str = * tmp时会发生分段错误

来自分类Dev

为什么会发生此错误,以及如何改进此功能

来自分类Dev

为什么此代码被认为是保守的,当操作系统中断线程时会发生什么?

来自分类Dev

为什么在我的WPF应用程序中有时会发生此Entity Framework崩溃?

来自分类Dev

未指定dbCreate时会发生什么?

来自分类Dev

升级Ubuntu时会发生什么?

来自分类Dev

单击提交按钮时会发生什么

来自分类Dev

循环结束时会发生什么?

来自分类Dev

合成子类的变量时会发生什么?

来自分类Dev

达到墓碑限制时会发生什么

来自分类Dev

VRAM已满时会发生什么?

来自分类Dev

当指针太大时会发生什么?

来自分类Dev

断言检查失败时会发生什么?

来自分类Dev

定义函数时会发生什么?

来自分类Dev

升级Ubuntu时会发生什么?

来自分类Dev

达到墓碑限制时会发生什么

来自分类Dev

PHP cookie过期时会发生什么?

来自分类Dev

碳粉过多时会发生什么?

Related 相关文章

  1. 1

    为什么在尝试设置Windows 8设置时会发生此无关的错误?

  2. 2

    为什么在使用repaint()而不是与getParent()。repaint()一起使用时会发生此Swing错误?

  3. 3

    为什么在使用repaint()而不是与getParent()。repaint()一起使用时会发生此Swing错误?

  4. 4

    为什么在文件中写入csv时会发生错误?

  5. 5

    linux中出现段错误时会发生什么

  6. 6

    无限本地错误:为什么在函数中重新定义全局变量而不是仅引用全局变量时会发生此错误?

  7. 7

    为什么在c中会发生此错误?

  8. 8

    为什么会发生此编译器错误?

  9. 9

    为什么会发生此python数字错误?

  10. 10

    Flutter GoogleMap Provider Context问题

  11. 11

    暂停时会发生什么?

  12. 12

    为什么我尝试复制* str = * tmp时会发生分段错误

  13. 13

    为什么会发生此错误,以及如何改进此功能

  14. 14

    为什么此代码被认为是保守的,当操作系统中断线程时会发生什么?

  15. 15

    为什么在我的WPF应用程序中有时会发生此Entity Framework崩溃?

  16. 16

    未指定dbCreate时会发生什么?

  17. 17

    升级Ubuntu时会发生什么?

  18. 18

    单击提交按钮时会发生什么

  19. 19

    循环结束时会发生什么?

  20. 20

    合成子类的变量时会发生什么?

  21. 21

    达到墓碑限制时会发生什么

  22. 22

    VRAM已满时会发生什么?

  23. 23

    当指针太大时会发生什么?

  24. 24

    断言检查失败时会发生什么?

  25. 25

    定义函数时会发生什么?

  26. 26

    升级Ubuntu时会发生什么?

  27. 27

    达到墓碑限制时会发生什么

  28. 28

    PHP cookie过期时会发生什么?

  29. 29

    碳粉过多时会发生什么?

热门标签

归档