错误: NoSuchMethodError: invalid member on null: 'toList 来了,但是当我使用注释的提供程序时代码有效,即最终 userdetails = Provider.of<List>(context).toList() ?? [];

,flutter,listview,web,provider"/>

首页 > 解决方案 > 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

在这个库中,您将能够使用许多与表情符号键盘相关的道具

标签: flutterlistviewwebprovider

解决方案


你需要稍微改变你的方法。

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]);
    });

推荐阅读