NoSuchMethodError:null 上的无效成员:'toList'(Flutter Web)_MapStream<QuerySnapshot 引发了异常

Posted

技术标签:

【中文标题】NoSuchMethodError:null 上的无效成员:\'toList\'(Flutter Web)_MapStream<QuerySnapshot 引发了异常【英文标题】:NoSuchMethodError: invalid member on null: 'toList' (Flutter Web) An exception was throw by _MapStream<QuerySnapshotNoSuchMethodError:null 上的无效成员:'toList'(Flutter Web)_MapStream<QuerySnapshot 引发了异常 【发布时间】:2021-01-14 16:05:15 【问题描述】:

错误: NoSuchMethodError:null 上的无效成员:'toList 来了,但是当我使用带注释的提供者时代码有效,即最终 userdetails = Provider.of(context).toList() ?? [];

但是,如果我使用 最终用户详细信息 = Provider.of(context).toList() ?? []; 我收到这两个错误,应用程序显示红屏。 1- NoSuchMethodError:null 上的无效成员:'toList 2- _MapStream 引发异常

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


【问题讨论】:

您希望 MyUserData 提供什么类型的数据? 请分享更多代码,很难解释导致问题的原因。 请立即查看。 显示提供者的代码。 根据我在 Firestore 和 Flutter 方面的经验回答了这个问题。希望这能解决你的问题:) 【参考方案1】:

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

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

【讨论】:

以上是关于NoSuchMethodError:null 上的无效成员:'toList'(Flutter Web)_MapStream<QuerySnapshot 引发了异常的主要内容,如果未能解决你的问题,请参考以下文章

NoSuchMethodError:null 上的无效成员:'toList'(Flutter Web)_MapStream<QuerySnapshot 引发了异常

Flutter:[cloud_firestore/unknown] NoSuchMethodError:null 上的无效成员:'includeMetadataChanges'(Flutter Web

NoSuchMethodError(NoSuchMethodError:方法'[]'在null上被调用。接收者:null尝试调用:[](“title”))

NoSuchMethodError (NoSuchMethodError: 方法 'map' 在 null 上被调用

例外:NoSuchMethodError:在 null 上调用了 getter 'uid'。接收方:null 尝试调用:uid

Flutter:NoSuchMethodError:方法 'fetchByID' 在 null 上被调用。接收方:null 尝试调用:fetchByID(2)