' 不是类型 'Venue' 的子类型,flutter,dart,dynamic,google-cloud-firestore,navigator"/>

首页 > 解决方案 > '_InternalLinkedHashMap' 不是类型 'Venue' 的子类型

问题描述

这是我的问题。在屏幕中,我使用Navigator.pushnamed()...带参数将信息发送到具有详细视图的屏幕。它工作正常!这是代码:

Navigator.pushNamed(context, VenueDetailScreen.id, arguments: snapshot.data[index]);

在 aSearchDelegate中,我正在尝试在 中做同样的事情buildSuggestions,但我遇到了错误。这是代码和错误:

results.map<Widget>(
                (a) => Container(
                  margin: EdgeInsets.symmetric(vertical: 10.0),
                  child: GestureDetector(
                    onTap: () {
                      print(a.data);
                      Navigator.pushNamed(context, VenueDetailScreen.id, arguments: a.data);
                    },
                    child: ListTile(
                      title: Text(
                        a.data['nombre'].toString(),
                      ),

错误: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Venue'

我会感谢您帮助了解什么是行不通的。谢谢!

标签: flutterdartdynamicgoogle-cloud-firestorenavigator

解决方案


a.data是一张地图,您需要通过执行类似的操作将其投射到模型中Venue.fromJson(a.data)

results.map<Widget>(
                (a) => Container(
                  margin: EdgeInsets.symmetric(vertical: 10.0),
                  child: GestureDetector(
                    onTap: () {
                      print(a.data);
                      Navigator.pushNamed(context, VenueDetailScreen.id, arguments: Venue.fromJson(a.data));
                    },
                    child: ListTile(
                      title: Text(
                        a.data['nombre'].toString(),
                      ),

推荐阅读