首先是在主界面显示为空
代码如下:
final providedList = Provider.of<List<category.List>>(
context,
);
appbarColor = providedList
.firstWhere(
(element) => element.name == currentListName,
orElse: () => providedList.first,
)
.color;
这里是错误
方法'firstWhere'被调用为null。接收器:零尝试调用:firstWhere(Closure: (List) =>bool, orElse: Closure: () =>列表)
然后宅在家里的人
代码如下:
List<Todo> todos = context.watch<List<Todo>>()
.where((e) =>
e.category == widget.selectedCategory && e.isCompleted == false)
.toList() ??
[];
这里是错误
where方法在null时被调用。接收器:零尝试调用:where(Closure: (Todo) =>bool)相关的导致错误的小部件是宅在家里的人
并且每个错误码打印两次
这是因为您的providedList
等于null。您需要从提供程序中获得一个正确初始化的值,然后调用.firstWhere
和.where
方法。
在提供商类
List<Todo> todos = [];
在别处
List<Todo> readTodoFromProvider = Provider.of<Todo>(context,listen: false).todos;
var result = readTodoFromProvider.where((e) =>e.category == widget.selectedCategory && e.isCompleted == false).toList();
要使Provider
工作,您需要添加它提供程序在MyApp之上,例如
//lib/main.dart
void main() {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => Todo()),
],
child: const MyApp(),
),
);
}