我正试图为一个简单的笔记列表创建一个单独的文件。
我在lib/pages/list_entries.dart中有以下代码:
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class NotesState extends ChangeNotifier {
var arrNotes = [];
}
class ListEntriesPage extends StatefulWidget {
const ListEntriesPage({super.key});
@override
State<ListEntriesPage> createState() => _ListEntriesState();
}
class _ListEntriesState extends State<ListEntriesPage> {
@override
Widget build(BuildContext context) {
var noteState = context.watch<NotesState>();
if (noteState.arrNotes.isEmpty) {
return Center(
child: Text('No note yet.'),
);
}
}
我得到以下错误:
错误:在此ListEntriesPage小部件上方找不到正确的提供程序
我很困惑,因为我的类NotesState不是在ListEntriesPage类的正上方声明的?
我试着查找其他问题,但代码示例太复杂了,我显然错过了这里的基础知识。
注意ListEntriesPage()是从main. dart中的类_MyHomePageState调用的。我提到这一点是因为我在main.dart中有一个非常相似的代码,它正在工作,我试图将其移动到一个单独的文件并调整代码,但我无法让它工作。所以我想这和某些东西的范围有关...
1条答案
按热度按时间tyky79it1#
这可能不是一个完美的解释,但希望它能帮助初学者。“在这个ListEntriesPageWidget之上”,他们指的是父作用域,而不是前面的几行。
此外,缺少的提供程序不是NotesState类,而是对ChangeNotifierProvider函数的调用。
所以,在我的情况下,我需要进入main.dart文件,并更改:
收件人:
现在应用程序知道使用NotesState类。
这个文档/教程对我帮助很大:https://docs.flutter.dev/data-and-backend/state-mgmt/simple