Flutter where和firstwhere方法是调用null,数据来自提供商



首先是在主界面显示为空

代码如下:

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(),
),
);
}

最新更新