【问题标题】:Flutter stuck with a "DatabaseEvent subtype" errorFlutter 出现“DatabaseEvent 子类型”错误
【发布时间】:2022-01-26 15:48:45
【问题描述】:

下面的代码给出了子类型的错误

Data Structure

代码

StreamBuilder(
        stream: _database.orderByKey().onValue,
        builder: (context, snapshot) {
          final valudisp = <Card>[];
          if (snapshot.hasData) {
            final firstdata = snapshot.data! as Map<String, dynamic>;
            firstdata.forEach((key, value) {
              final datalast = new Map<String, dynamic>.from(value);
              final coinname = datalast.keys;
              final displaycard = Card(...);
              valudisp.add(displaycard);
             });
          }
          return Expanded(...);
       }); 
      }    

现在我遇到了错误

type 'DatabaseEvent' is not a subtype of type 'Map<String,dynamic>' in typecast

【问题讨论】:

  • 错误信息是什么?
  • 错误:没有为类型 'Event' 定义 getter 'snapshot'。
  • 第二个快照有错误。我的数据库就像附加图片一样。
  • 试试final firstdata = snapshot.data! as Map&lt;String, dynamic&gt;
  • 它可以工作,但现在我在应用类型“DatabaseEvent”不是类型转换中的“Map”类型的子类型上遇到错误

标签: flutter dart firebase-realtime-database flutter-streambuilder dart-stream


【解决方案1】:

我想你正在那里寻找DatabaseEvent class

(snapshot.data! as DatabaseEvent).snapshot.value
                 // ?

【讨论】:

    【解决方案2】:

    这段代码运行良好。

    将第一个快照映射为

    StreamBuilder(
            stream: _database.onValue,
            builder: (context, snapshot) {
              final valudisp = <Card>[];
              if (snapshot.hasData) {
                final firstdata = (snapshot.data! as DatabaseEvent)
                    .snapshot
                    .value as Map<Object?, dynamic?>;
                firstdata.forEach((key, value) {
                  final datalast = new Map<String, dynamic>.from(value);
                  final coinname = datalast['namedata'];
                  final _diff = datalast['dif'];
                  final time = datalast['Time'];
                  final Quantity = datalast['Quantity'];
                  final tradep = datalast['tradep'];
                  final displaycard =Card(...)
    

    【讨论】:

      猜你喜欢
      • 2020-10-20
      • 2020-05-15
      • 2021-10-20
      • 1970-01-01
      • 2022-07-10
      • 2021-07-13
      • 2020-08-07
      • 2021-02-17
      • 1970-01-01
      相关资源
      最近更新 更多