【问题标题】:Closure call with mismatched arguments: function '[]'参数不匹配的闭包调用:函数 \'[]\'
【发布时间】:2022-12-21 16:46:20
【问题描述】:

参数不匹配的闭包调用:函数“[]”接收方:闭包:() => Map<String, dynamic> from Function 'data':.尝试调用:[]("text") 发现:[]() => Map<String, dynamic>

相关的导致错误的小部件是

StreamBuilder<查询快照<对象?>>

class MessagesStream extends StatelessWidget {
  const MessagesStream({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Flexible(
      flex: 4,
      child: StreamBuilder<QuerySnapshot>(
        stream: _firestore
            .collection('messages')
            // Sort the messages by timestamp DESC because we want the newest messages on bottom.
            .orderBy("timestamp", descending: true)
            .snapshots(),
        builder: (context, snapshot) {
          // If we do not have data yet, show a progress indicator.
          if (!snapshot.hasData) {
            return const Center(
              child: CircularProgressIndicator(),
            );
          }
          // Create the list of message widgets.

          List<Widget> messageWidgets = snapshot.data!.docs.map<Widget>((m) {
            final data = m.data as dynamic;
            final messageText = data['text'];
            final messageSender = data['sender'];
            final currentUser = loggedInuser!.email;
            final timeStamp = data['timestamp'];
            return MessageBubble(
              sender: messageSender,
              text: messageText,
              timestamp: timeStamp,
              isMe: currentUser == messageSender,
            );
          }).toList();

          return Expanded(
            child: ListView(
              reverse: true,
              padding:
                  const EdgeInsets.symmetric(horizontal: 10.0, vertical: 20.0),
              children: messageWidgets,
            ),
          );
        },
      ),
    );
  }
}

【问题讨论】:

    标签: flutter firebase google-cloud-firestore


    【解决方案1】:

    改变这个;

        final data = m.data as dynamic;
    

    有了这个:

        final data = m.data() as Map<String, dynamic>;
    

    【讨论】:

      猜你喜欢
      • 2013-12-01
      • 1970-01-01
      • 2022-08-13
      • 2021-12-09
      • 2021-12-10
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多