flutter:类型'String'不是类型'List '

问题描述 投票:0回答:1

我实际上有两个问题。

  1. 我正在尝试将String类型的对象添加到Firestore中的现有数组,如下所示:
  addWalletToUser(coinAddress) async {
    final FirebaseUser user = (await FirebaseAuth.instance.currentUser());
    try {
      await Firestore.instance.collection('users').document(user.uid)
          .updateData({
            "cryptoAddresses": FieldValue.arrayUnion(coinAddress)
          });
    } catch (e) {
      print('error caught: $e');
      return null;
    }
  }

这将导致以下错误:flutter: type 'String' is not a subtype of type 'List<dynamic>'

  1. 我的第二个问题是为什么在addWalletToUser应该返回null的情况下执行该if语句中的代码:
if (addWalletToUser(_textController.text) != null)

任何帮助将不胜感激!

firebase flutter google-cloud-firestore flutter-layout
1个回答
0
投票

关于此错误:

flutter:类型'String'不是类型'List'的子类型

arrayUnion采用类型为List<dynamic>的参数:

  static FieldValue arrayUnion(List<dynamic> elements) =>
      FieldValue._(FieldValueType.arrayUnion, elements);

https://github.com/FirebaseExtended/flutterfire/blob/master/packages/cloud_firestore/cloud_firestore/lib/src/field_value.dart#L35

因此,您需要执行以下操作:

"cryptoAddresses": FieldValue.arrayUnion(['data1','data2','data3'])
© www.soinside.com 2019 - 2024. All rights reserved.