我正在尝试使用StreamProvider使firestore文档流中的数据在我的应用程序中可用。这是一个食谱应用程序,这是购物清单。
我有一个模型RecipeItem,其中包含关于食谱中项目的详细信息。这个文件保存一个数组,称为列表,包含列表中每个项目的映射。
下面是我与firestore的连接并设置流。我尝试获取文档,然后使用用户映射为列表中的每个项目创建RecipeItem实例。方法如下:
Stream<List<RecipeItem>> getPersonalList() {
print('Fetching personal list');
return _db.collection('shopping_lists').document(userId).snapshots().map(
(DocumentSnapshot documentSnapshot) => documentSnapshot.data['list']
.map(
(item) =>
// print(item);
RecipeItem(
category: item['category'],
wholeLine: item['wholeLine'],
recipeTitle: item['recipeTitle'],
recipeId: item['recipeId'],
purchased: item['purchased'],
),
)
.toList(),
);
}
现在在main.dart我有一个流提供程序,寻找类型
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
StreamProvider<FirebaseUser>(
//Access withing the app -> var user = Provider.of<FirebaseUser>(context);
create: (_) => AuthService().user),
StreamProvider<List<RecipeItem>>(
create: (_) => PersonalListDB().getPersonalList(),
catchError: (context, error) {
print('This is the error from stream provider *** $error');
},
),
ChangeNotifierProvider(
create: (_) => RecipesDB(),
)
],
child: MaterialApp(
etc etc...
当我运行此命令时,会出现以下错误:
类型“List”不是类型转换中类型“List”的子类型
我唯一能解决这个问题的方法是,如果我改变我所有的
列表
我已经尝试了几件(一百万件)事情。
我在这里找到了这个帖子:获取类型列表
这告诉我. toList()可能是问题所在,因为它创建了List。所以我尝试使用List.from和. cast
非常感谢为解决这个问题和帮助我理解这个问题而提供的任何帮助。
Firestore的列表(db、httpRequest等)是动态类型的,为了避免调用它们时出现问题,您可以尝试告诉映射您试图强制转换对象的类型
return _db.collection('shopping_lists').document(userId).snapshots().map<List<RecipeItem>>( //I'm not sure what kind of object this map should return, is this the method map part of the stream? if it is then it should be of type List<RecipeItem>
(DocumentSnapshot documentSnapshot) => documentSnapshot.data['list']
.map<RecipeItem>( //now it will know it's not a dynamic value but of type RecipeItem
(item) =>
// print(item);
RecipeItem(
category: item['category'],
wholeLine: item['wholeLine'],
recipeTitle: item['recipeTitle'],
recipeId: item['recipeId'],
purchased: item['purchased'],
),
)
.toList(),
);
我是颤振开发方面的新手。我犯了一个错误 列表不是“Iterable”类型的子类型 到目前为止,我已经做到了。 模范班 缅因州班内 } 我试图从2天开始解决这个问题。 请帮忙,谢谢。 这里是JSON响应,您可以检查链接
我有一个问题,因为2小时。我有这个错误,我看到了更多的主题,但我不能解决它。 消息:_TypeError(类型列表不是类型映射的子类型)颤动 我的模型: 我的主题屏幕: 我尝试了更多的教程和不同的主题,但我有相同的错误。。。 非常感谢。
我的JSON有点像这样: 我的模型类: 这是我的api调用: 如何获取图像。小班?如果我需要澄清我的问题,请告诉我。我得到的错误列表不是Map类型的子类型
当我尝试解码json时,它会给我错误。 我的模范班 功能在我使用它的地方 json数据
我正面临着一个奇怪的颤动错误。我使用json序列化。 这是我的密码 我的web api发送的数据如下 这是数组的数组。 生成错误的代码是 它给出的错误 JSON数据这里是JSON数据格式的屏幕截图
我目前正在构建一个应用程序,通过医疗api读取数据,我试图解析JSON。 我为用户创建了一个模型类: 这是我试图阅读的JSON信息: 但是我得到的错误列表不是Map类型的子类型 如何修复此错误?