【问题标题】:Could not find the correct Provider above this ListView Widget在此 ListView 小部件上方找不到正确的提供程序
【发布时间】:2021-11-18 08:53:25
【问题描述】:

错误:在此 StudentList 小部件上方找不到正确的提供者

尝试从提供程序包访问数据但遇到此错误我尝试将 ChangeNotifierProvider 添加到主 dart 文件但仍然收到相同的错误。

主屏幕

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

  @override
  Widget build(BuildContext context) {
    ChangeNotifierProvider(
      create: (_) => Students(),
    );
    return Scaffold(
      appBar: AppBar(
        title: const Text("Home"),
      ),
      body: StudentsList(),
    );
  }
}

学生名单文件

class StudentsList extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var studentDataList = Provider.of<Students>(context).studentsList;
    return ListView.builder(
      itemBuilder: (ctx, item) {
        return ListTile(...);
  }
}

【问题讨论】:

  • 你使用热重载吗?如果是,您应该停止您的项目并再次运行它,以便在添加 ChangeNotifierProvider 后能够使用 Provider
  • 试过了,还是不行

标签: flutter dart flutter-provider


【解决方案1】:

它只是造成此问题的语法错误。 将主屏幕中的代码编辑为:

Widget build(BuildContext context) {
    return ChangeNotifierProvider(
      create: (_) => Students(),
      child: Scaffold(
        appBar: AppBar(
          title: const Text("Home"),
        ),
        body: StudentsList(),
      ),
    );
  }
}

【讨论】:

    【解决方案2】:

    将 Provider 移至父级 MaterialApp 上下文,允许屏幕 A 和 B 继承其状态/上下文。

    提供者(MaterialApp)

    屏幕 A 屏幕B

    查看此链接:Could not find the correct provider above this widget

    查看此链接以获取更多详细信息非常好: https://flutteragency.com/how-to-resolve-could-not-find-the-correct-provider-above-widget-in-flutter/

    【讨论】:

      猜你喜欢
      • 2019-11-29
      • 2021-01-13
      • 2021-07-22
      • 2021-11-11
      • 2020-12-01
      • 2020-08-04
      • 2020-09-18
      • 2020-07-26
      • 2021-07-04
      相关资源
      最近更新 更多