无法在此ListView小部件上方找到正确的提供程序



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

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 context,允许屏幕a和B都继承它的状态/context。

提供者(MaterialApp)

屏幕屏幕B

检查此链接:无法在此小部件上方找到正确的提供程序

和它的好检查这个链接以获得更多的细节: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(),
),
);
}
}

最新更新