'_InternalLinkedHashMap <String,dynamic>'不是'Venue'类型的子类型

时间:2020-06-25 23:42:42

标签: flutter dart dynamic google-cloud-firestore navigator

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

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

SearchDelegate中,我试图在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'

感谢您的帮助,以帮助您了解不起作用的地方。谢谢!

1 个答案:

答案 0 :(得分:1)

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(),
                      ),