flutter - NoSuchMethodError:null 上的无效成员:'toList'(Flutter Web)_MapStream 引发了异常
错误: NoSuchMethodError: invalid member on null: 'toList 来了,但是当我使用注释的提供程序时代码有效,即最终 userdetails = Provider.of<List>(context).toList() ?? [];
问题描述
错误: NoSuchMethodError: invalid member on null: 'toList 来了,但是当我使用注释的提供程序时代码有效,即最终 userdetails = Provider.of<List>(context).toList() ?? [];
但是,如果我使用最终 userdetails = Provider.of<List>(context).toList() ?? []; 我收到这两个错误,应用程序显示红屏。1- NoSuchMethodError:null 上的无效成员:'toList 2- _MapStream<QuerySnapshot, List> 引发异常
import 'package:traveltogether_admin/Admin_Screens/Admin_ManageUsers_Tile.dart';
import 'package:traveltogether_admin/Models/user.dart';
class ManageUsers extends StatelessWidget {
static const id = 'Admin_manage_users';
@override
Widget build(BuildContext context) {
final userdetails = Provider.of<List<MyUserData>>(context).toList() ?? [];
// final userdetails = Provider.of<List<RequestToJoinData>>(context).toList() ?? [];
final user= userdetails;
return ListView.builder(
// shrinkWrap: true,
// physics: NeverScrollableScrollPhysics(),
// primary: false,
itemCount: userdetails.length,
itemBuilder: (context,index)
{
print(userdetails);
return ManageUserTile(user[index]);
});
}
}
//MyUserData is the model class.
// Rest of the code.
List<MyUserData> _MyUserDataListfromSnapshot(QuerySnapshot snapshot)
{
return snapshot.documents.map((doc) {
return MyUserData(
uid: uid ?? '',
fullname: doc.data['fullname'] ?? '',
CNIC: doc.data['CNIC'] ?? '',
studentID: doc.data['studentID'] ?? '',
department: doc.data['department'] ?? '',
phonenumber: doc.data['phonenumber'] ?? '',
vehicle: doc.data['vehicletype'] ?? '',
VehicleCC: doc.data['vehicleCC'] ?? '',
carModel: doc.data['carModel'] ?? '',
numberplate: doc.data['numberplate'] ?? '',
);
}).toList();
}
Stream<List<MyUserData>> get myUserDataListStream{
return myUserCollection.snapshots().map(_MyUserDataListfromSnapshot);
}
只需安装此依赖项即可直接使用表情符号键盘,
https://github.com/liangl1412/react-native-emoji-keyboard
在这个库中,您将能够使用许多与表情符号键盘相关的道具
解决方案
你需要稍微改变你的方法。
final List<MyUserData> users = Provider.of<List<MyUserData>>(context);
在 ListviewBuilder 中执行 null 检查。
ListView.builder(
// shrinkWrap: true,
// physics: NeverScrollableScrollPhysics(),
// primary: false,
itemCount: userdetails?.length ?? 0,
itemBuilder: (context,index){
return ManageUserTile(users[index]);
});
推荐阅读
- vespa - 获取结果位于 vespa 的时间间隔之间
- java - 最终方法参数与将参数重新声明为方法中的最终变量
- json - 如何将 JSON 数据转换为 pascal VOC 格式?
- pyspark - Pyspark 和 HDFS:将新的数据框列添加到 hdfs 中的现有镶木地板文件
- php - 如何获取 Microsoft Outlook api 的永久访问令牌
- bash - 使 nl 从指定的行枚举
- asp.net - ASP.NET 路由参数中的管道字符导致 404
- javascript - 使用 angularjs 读取 CSV 文件的标题
- javascript - 如何创建在特定日期和时间启用的按钮,例如 Flipkart 销售
- mysql - 如何对包含数字和字母的字符串进行排序?
错误: NoSuchMethodError: invalid member on null: 'toList 来了,但是当我使用注释的提供程序时代码有效,即最终 userdetails = Provider.of<List>(context).toList() ?? [];
问题描述
错误: NoSuchMethodError: invalid member on null: 'toList 来了,但是当我使用注释的提供程序时代码有效,即最终 userdetails = Provider.of<List>(context).toList() ?? [];
但是,如果我使用最终 userdetails = Provider.of<List>(context).toList() ?? []; 我收到这两个错误,应用程序显示红屏。1- NoSuchMethodError:null 上的无效成员:'toList 2- _MapStream<QuerySnapshot, List> 引发异常
import 'package:traveltogether_admin/Admin_Screens/Admin_ManageUsers_Tile.dart';
import 'package:traveltogether_admin/Models/user.dart';
class ManageUsers extends StatelessWidget {
static const id = 'Admin_manage_users';
@override
Widget build(BuildContext context) {
final userdetails = Provider.of<List<MyUserData>>(context).toList() ?? [];
// final userdetails = Provider.of<List<RequestToJoinData>>(context).toList() ?? [];
final user= userdetails;
return ListView.builder(
// shrinkWrap: true,
// physics: NeverScrollableScrollPhysics(),
// primary: false,
itemCount: userdetails.length,
itemBuilder: (context,index)
{
print(userdetails);
return ManageUserTile(user[index]);
});
}
}
//MyUserData is the model class.
// Rest of the code.
List<MyUserData> _MyUserDataListfromSnapshot(QuerySnapshot snapshot)
{
return snapshot.documents.map((doc) {
return MyUserData(
uid: uid ?? '',
fullname: doc.data['fullname'] ?? '',
CNIC: doc.data['CNIC'] ?? '',
studentID: doc.data['studentID'] ?? '',
department: doc.data['department'] ?? '',
phonenumber: doc.data['phonenumber'] ?? '',
vehicle: doc.data['vehicletype'] ?? '',
VehicleCC: doc.data['vehicleCC'] ?? '',
carModel: doc.data['carModel'] ?? '',
numberplate: doc.data['numberplate'] ?? '',
);
}).toList();
}
Stream<List<MyUserData>> get myUserDataListStream{
return myUserCollection.snapshots().map(_MyUserDataListfromSnapshot);
}
只需安装此依赖项即可直接使用表情符号键盘,
https://github.com/liangl1412/react-native-emoji-keyboard
在这个库中,您将能够使用许多与表情符号键盘相关的道具
解决方案
你需要稍微改变你的方法。
final List<MyUserData> users = Provider.of<List<MyUserData>>(context);
在 ListviewBuilder 中执行 null 检查。
ListView.builder(
// shrinkWrap: true,
// physics: NeverScrollableScrollPhysics(),
// primary: false,
itemCount: userdetails?.length ?? 0,
itemBuilder: (context,index){
return ManageUserTile(users[index]);
});
推荐阅读
- vespa - 获取结果位于 vespa 的时间间隔之间
- java - 最终方法参数与将参数重新声明为方法中的最终变量
- json - 如何将 JSON 数据转换为 pascal VOC 格式?
- pyspark - Pyspark 和 HDFS:将新的数据框列添加到 hdfs 中的现有镶木地板文件
- php - 如何获取 Microsoft Outlook api 的永久访问令牌
- bash - 使 nl 从指定的行枚举
- asp.net - ASP.NET 路由参数中的管道字符导致 404
- javascript - 使用 angularjs 读取 CSV 文件的标题
- javascript - 如何创建在特定日期和时间启用的按钮,例如 Flipkart 销售
- mysql - 如何对包含数字和字母的字符串进行排序?