在此 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(),
),
);
}
}
错误:在此 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(),
),
);
}
}