简体   繁体   English

期望一个“用户”类型的值,但在尝试将 Firestore 数据获取到 flutter web 上的 PaginatedDataTable 时得到一个“Null”类型的值?

[英]Expected a value of type 'User', but got one of type 'Null' while trying to get firestore data in to PaginatedDataTable on flutter web?

I am trying to show one of my firestore collection data on PaginatedDataTable on flutter web application.我正在尝试在 flutter web 应用程序上的 PaginatedDataTable 上显示我的 Firestore 收集数据之一。 But getting the error.但得到错误。 Please fine my code and debug error below.请在下面修改我的代码和调试错误。 If below approach is not correct please let me know a best approach.如果以下方法不正确,请告诉我最佳方法。 I want to show my Firestore fields on PaginatedDataTable as stream builder method.我想在 PaginatedDataTable 上将我的 Firestore 字段显示为 stream 构建器方法。 Need help how to do this?需要帮助如何做到这一点? if it is not possible in PaginatedDataTable, and if there is any other way please let me know.如果在 PaginatedDataTable 中不可能,如果有其他方法请告诉我。

Below is my example code:下面是我的示例代码:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

class AdminDashboard extends StatefulWidget {
  const AdminDashboard({Key? key}) : super(key: key);

  @override
  _AdminDashboardState createState() => _AdminDashboardState();
}

class _AdminDashboardState extends State<AdminDashboard> {
  //final DataTableSource _allUsers = UsersData();

  @override
  Widget build(BuildContext context) {
    List<User>? users;
    return StreamBuilder(
        //padding: const EdgeInsets.all(16),
        stream: FirebaseFirestore.instance.collection("users").snapshots(),
        builder: (context, AsyncSnapshot<QuerySnapshot> snap) {
          users = snap.data!.docs.map((e) => User.fromMap(e.data)).cast<User>().toList();
          final DataTableSource _allUsers = UsersData(users!);
          if (snap.hasData) {
            return PaginatedDataTable(
              header: const Text("Header Text"),
              rowsPerPage: 9,
              columns: const [
                DataColumn(label: Text('Uid')),
                DataColumn(label: Text('Name')),
                DataColumn(label: Text('Email')),
                DataColumn(label: Text('Role'))
              ],
              source: _allUsers,
            );
          } else {
            return const Text('No data...');
          }
        });
  }
}

class User {
  
  late String name;

  late String email;

  late String role;

  late String uid;

  static fromMap(Object? Function() data) {}
}

class UsersData extends DataTableSource {
  final List<User> users;

  UsersData(this.users);

  @override
  DataRow getRow(int index) {
    return DataRow.byIndex(cells: [
      DataCell(Text(users[index].uid)),
      DataCell(Text(users[index].name)),
      DataCell(Text(users[index].email)),
      DataCell(Text(users[index].role)),
    ], index: index);
  }

  @override
  bool get isRowCountApproximate => false;

  @override
  int get rowCount => users.length;

  @override
  int get selectedRowCount => 0;
}

Below is the Debug console error:下面是调试控制台错误:

Launching lib\main.dart on Chrome in debug mode...
This app is linked to the debug service: ws://127.0.0.1:54737/8r23hBREOEg%3D/ws
Debug service listening on ws://127.0.0.1:54737/8r23hBREOEg=/ws
 Running with sound null safety
Connecting to VM Service at ws://127.0.0.1:54737/8r23hBREOEg=/ws

════════ Exception caught by widgets library ═══════════════════════════════════
The following TypeErrorImpl was thrown building StreamBuilder<QuerySnapshot<Map<String, dynamic>>>(dirty, state: _StreamBuilderBaseState<QuerySnapshot<Map<String, dynamic>>, AsyncSnapshot<QuerySnapshot<Map<String, dynamic>>>>#58793):
Unexpected null value.

The relevant error-causing widget was
StreamBuilder<QuerySnapshot<Map<String, dynamic>>>
When the exception was thrown, this was the stack
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49      throw_
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 528:63  nullCheck
packages/pma/admin_dir/admin_dashboard.dart 21:81                                                                              <fn>
packages/flutter/src/widgets/async.dart 545:81                                                                                 build
packages/flutter/src/widgets/async.dart 124:48                                                                                 build
packages/flutter/src/widgets/framework.dart 4782:27                                                                            build
packages/flutter/src/widgets/framework.dart 4665:15                                                                            performRebuild
packages/flutter/src/widgets/framework.dart 4840:11                                                                            performRebuild
packages/flutter/src/widgets/framework.dart 4355:5                                                                             rebuild
packages/flutter/src/widgets/framework.dart 4643:5                                                                             [_firstBuild]
packages/flutter/src/widgets/framework.dart 4831:11                                                                            [_firstBuild]
packages/flutter/src/widgets/framework.dart 4638:5                                                                             mount
packages/flutter/src/widgets/framework.dart 3673:13                                                                            inflateWidget
packages/flutter/src/widgets/framework.dart 3425:18                                                                            updateChild
packages/flutter/src/widgets/framework.dart 4690:16                                                                            performRebuild
packages/flutter/src/widgets/framework.dart 4355:5                                                                             rebuild
packages/flutter/src/widgets/framework.dart 5020:5                                                                             update
packages/flutter/src/widgets/framework.dart 3412:14                                                                            updateChild
packages/flutter/src/widgets/framework.dart 4690:16                                                                            performRebuild
packages/flutter/src/widgets/framework.dart 4840:11                                                                            performRebuild
packages/flutter/src/widgets/framework.dart 4355:5                                                                             rebuild
packages/flutter/src/widgets/framework.dart 2620:31                                                                            buildScope
packages/flutter/src/widgets/binding.dart 882:9                                                                                drawFrame
packages/flutter/src/rendering/binding.dart 319:5                                                                              [_handlePersistentFrameCallback]
packages/flutter/src/scheduler/binding.dart 1143:15                                                                            [_invokeFrameCallback]
packages/flutter/src/scheduler/binding.dart 1080:9                                                                             handleDrawFrame
packages/flutter/src/scheduler/binding.dart 996:5                                                                              [_handleDrawFrame]
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 1003:13               invoke
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 157:5                 invokeOnDrawFrame
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine.dart 440:45                                    <fn>
════════════════════════════════════════════════════════════════════════════════

════════ Exception caught by widgets library ═══════════════════════════════════
Expected a value of type 'User', but got one of type 'Null'
The relevant error-causing widget was
StreamBuilder<QuerySnapshot<Map<String, dynamic>>>
════════════════════════════════════════════════════════════════════════════════ 

The error log indicated that User.fromMap(e.data) didn't return a User(which return null instead).错误日志表明User.fromMap(e.data)没有返回用户(而是返回 null)。 And I found that your User.fromMap(e.data) implementation is empty:我发现你的User.fromMap(e.data)实现是空的:

class User {
  
  late String name;

  late String email;

  late String role;

  late String uid;

  static fromMap(Object? Function() data) {}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Flutter web:预期类型为“SkDeletable”的值,但得到的类型为“Null” - Flutter web: Expected a value of type 'SkDeletable', but got one of type 'Null' Flutter Web Firestore 错误:预期类型为“((对象?)=&gt;对象)?”,但得到类型“(对象)=&gt; Z497031794414A552435F90151AC3?”之一 - Flutter Web Firestore error: Expected a value of type '((Object?) => Object)?', but got one of type '(Object) => Object?' Flutter Web(Firestore 错误)- 应为“JSObject”类型的值<qc> ',但得到了 'NativeJavaScriptObject' 类型之一</qc> - Flutter Web (Firestore Error)- Expected a value of type 'JSObject<qc>', but got one of type 'NativeJavaScriptObject' flutter 错误:需要一个“int”类型的值,但得到一个“Null”类型的值 - flutter error : Expected a value of type 'int' but got one of type 'Null' Flutter 期望类型为“Widget”的值,但得到类型为“Null”的值 - Flutter Expected a value of type 'Widget', but got one of type 'Null' Flutter Web - 需要一个&#39;Map&#39;类型的值<String, dynamic> &#39;,但得到了“空”类型之一 - Flutter Web - Expected a value of type 'Map<String, dynamic>', but got one of type 'Null' 预期类型为“String”的值,但在数据更新时得到类型为“Null”的值 - Expected a value of type 'String', but got one of type 'Null' while data updation 期望类型为“String”的值,但在 FutureBuilder SnapShot Flutter 中得到类型为“Null”的值 - Expected a value of type 'String', but got one of type 'Null' in FutureBuilder SnapShot Flutter Flutter 'showDatePicker' 抛出异常:错误:需要一个“String”类型的值,但得到一个“Null”类型的值 - Flutter 'showDatePicker' throws exception: Error: Expected a value of type 'String', but got one of type 'Null' [Flutter 错误] - 期望“String”类型的值,但在尝试将图像发送到服务器时得到“XFile”类型之一错误 - [Flutter Error ]-Expected a value of type 'String', but got one of type 'XFile' Error whe trying to send an image to the server
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM