在此 ListView 小部件上方找不到正确的提供者

Could not find the correct Provider above this ListView Widget

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

尝试从提供程序包访问数据但遇到此错误我尝试将 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(...);
  }
}

将 Provider 向上移动到父级 MaterialApp 上下文,允许屏幕 A 和 B 继承其 state/context。

供应商(材料应用)

Screen A Screen B

检查此 link:

最好查看此 link 了解更多详情: https://flutteragency.com/how-to-resolve-could-not-find-the-correct-provider-above-widget-in-flutter/

这只是一个语法错误导致了这个问题。 将主屏幕中的代码编辑为:

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