【问题标题】:The operator '[]' isn't defined for the class 'Object?'运算符 '[]' 没有为类 'Object?' 定义
【发布时间】:2021-10-05 04:42:00
【问题描述】:

Bantu saya untuk memecahkan masalah dibawah ini

import 'package:cloud_firestore/cloud_firestore.dart';

class UserModel{
  static const NUMBER = 'number';
  static const ID = 'id';

  String _number = '';
  String _id = '';

  String get number => _number;
  String get id => _id;

  UserModel.fromSnapshot(DocumentSnapshot snapshot){
    _number = snapshot.data()![NUMBER];
    _id = snapshot.data()![ID];
  }
}

出现以下错误

lib/models/user_model.dart:16:30: 错误:运算符 '[]' 不是 为“对象?”类定义。

  • “对象”来自“飞镖:核心”。尝试将运算符更正为现有运算符,或定义“[]”运算符。 _number = 快照.data()[NUMBER]; ^ lib/models/user_model.dart:17:26:错误:未为类“对象?”定义运算符“[]”。
  • “对象”来自“飞镖:核心”。尝试将运算符更正为现有运算符,或定义“[]”运算符。 _id = snapshot.data()[ID];

【问题讨论】:

  • 能否提供 DocumentSnapshot 模型?
  • snapshot.data!.data()[NUMBER] _ number 替换为 this 和 id 也
  • 首先,您如何直接访问 NUMBER。这是一个静态常量,应该是 UserModel.NUMBER 吧?

标签: flutter object dart snapshot


【解决方案1】:

在最新版本的 Cloud Firestore 中,DocumentSnapshot 是一种泛型类型,因此您需要传递一个类型参数。 示例 -

import 'package:cloud_firestore/cloud_firestore.dart';

class UserModel{
  static const NUMBER = 'number';
  static const ID = 'id';

  String _number = '';
  String _id = '';

  String get number => _number;
  String get id => _id;

  UserModel.fromSnapshot(DocumentSnapshot<Map<String,dynamic>> snapshot){
    _number = snapshot.data()![NUMBER];
    _id = snapshot.data()![ID];
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2021-11-09
    • 2023-01-07
    • 2022-11-23
    • 2022-01-05
    • 1970-01-01
    • 2021-05-11
    相关资源
    最近更新 更多