未为类型“Object Function()”定义运算符“[]”
Posted
技术标签:
【中文标题】未为类型“Object Function()”定义运算符“[]”【英文标题】:The operator '[]' isn't defined for the type 'Object Function()' 【发布时间】:2022-01-05 16:02:48 【问题描述】:你好... 至少在我的两个页面上,我几乎遇到了这个问题,我做了很多来解决它,但似乎我做不到。 这是我在产品页面中的代码:
import 'package:cloud_firestore/cloud_firestore.dart';
class ProductModel
static const ID = "id";
static const NAME = "name";
static const PICTURE = "picture";
static const PRICE = "price";
static const DESCRIPTION = "description";
String _id;
String _name;
String _picture;
String _description;
String get id => _id;
String get name => _name;
String get picture => _picture;
String get brand => _brand;
String get category => _category;
String get description => _description;
ProductModel.fromSnapshot(DocumentSnapshot snapshot)
_id = snapshot.data[ID];
_brand = snapshot.data[BRAND];
_sale = snapshot.data[SALE];
_description = snapshot.data[DESCRIPTION] ?? " ";
这里给出了错误
The operator '[]' isn't defined for the type 'Object Function()'.
指的是模型...
这里是 pubspec.yaml
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
carousel_pro: any
google_sign_in: ^5.2.1
firebase_storage: ^10.1.0
cloud_firestore: ^3.1.0
firebase_core: ^1.10.0
firebase_auth: ^3.2.0
firebase_analytics: ^8.3.4
shared_preferences: ^2.0.9
image_picker: ^0.8.4+4
firebase_database: ^8.1.0
flutter_search_panel: any
intl: ^0.17.0
provider: ^6.0.1
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for ios style icons.
cupertino_icons: ^1.0.4
carousel_slider: ^4.0.0
transparent_image: ^2.0.0
flutter_spinkit: ^5.1.0
uuid: ^3.0.5
flutter_typeahead: ^3.2.3
如果有任何帮助,我将不胜感激
非常感谢
【问题讨论】:
【参考方案1】:_id = snapshot.data[ID];
_brand = snapshot.data[BRAND];
_sale = snapshot.data[SALE];
_description = snapshot.data[DESCRIPTION] ?? " ";
snapshot.data
不是地图,它是一个返回地图的函数,所以我应该有括号才能调用它:
_id = snapshot.data()[ID];
_brand = snapshot.data()[BRAND];
_sale = snapshot.data()[SALE];
_description = snapshot.data()[DESCRIPTION] ?? " ";
希望微小的变化足以解决问题
【讨论】:
感谢您的帮助,但它不会再次使 [BRAND] 成为订单,我的意思是它给出了这些错误 只在品牌上?你能告诉我错误吗?这是否与您显示的代码中未声明 BRAND 的事实有关? 不仅是品牌,当我将货架()放在[ID]之前或其他人本身(我的意思是[ID])之前都会出错。我希望你能明白,因为我的英语不太好。 _brand = snapshot.data()[品牌]; --------- 那条线是红色的 好的,但是错误说明了什么?您能否复制粘贴错误消息或显示带有可见错误消息的屏幕截图?对不起 好的,感谢您的帮助。这是图片的链接:ibb.co/tZjSfLf以上是关于未为类型“Object Function()”定义运算符“[]”的主要内容,如果未能解决你的问题,请参考以下文章
未为 InvoiceTemplateGet 类型定义方法 execute()
未为 Cast.CastOptions.Builder 类型定义 setVerboseLoggingEnabled(boolean)
错误“未为 UserManager 类型定义方法 createUser(String, int)”
Selenium Webdriver:方法 alert() 未为 WebDriver.TargetLocator 类型定义