gpt4 book ai didi

flutter - 运算符 '[]' 没有为类型 'Iterable' 定义。尝试定义运算符 '[]' .dartundefined_operator

转载 作者:行者123 更新时间:2023-12-03 03:32:36 28 4
gpt4 key购买 nike

我正在尝试在另一个类的另一个小部件中返回 MealItem 类的构造函数,我正确地导入了并且我得到了这个

错误:运算符“[]”没有为类型“Iterable”定义。尝试定义运算符 '[]'.dartundefined_operator

这里是 MealItem 类

import 'package:flutter/material.dart';
import '../models/meal.dart';

class MealItem extends StatelessWidget {
final String title;
final String imageUrl;
final int duration;
final Complexity complexity;
final Affordability affordability;

MealItem(
this.title,
this.imageUrl,
this.duration,
this.complexity,
this.affordability
);
}
}

这是 CategoryMealsScreen 类中的错误

enter image description here

import 'package:flutter/material.dart';
import '../widgets/meal_item.dart';
import '../models/dummy_data.dart';

class CategoryMealsScreen extends StatelessWidget {
static const routeName = '/CategoriesScreen';

//final String categoryId;
//final String categoryTitle;

//CategoryMealsScreen(this.categoryId,this.categoryTitle);

@override
Widget build(BuildContext context) {
final routeArgs =
ModalRoute.of(context).settings.arguments as Map<String, String>;
final categoryTitle = routeArgs['title'];
final categoryId = routeArgs['id'];
final categoryMeals = DUMMY_MEALS.where((meal) {
return meal.categories.contains(categoryId);
});
return Scaffold(
appBar: AppBar(title: Text(categoryTitle)),
body: ListView.builder(
itemBuilder: (ctx, index) {
return MealItem(
title : categoryMeals[index].title,
imageUrl: categoryMeals[index].imageUrl,
duration: categoryMeals[index].duration,
complexity: categoryMeals[index].complexity,
affordability: categoryMeals[index].affordability
);
},
itemCount: categoryMeals.length,
),
);
}
}

这是使用 vsCode 的 IDE 错误:

The operator '[]' isn't defined for the type 'Iterable<Meal>'.
Try defining the operator '[]'.

任何帮助将不胜感激

最佳答案

您正在将命名 参数传递给采用位置 参数的构造函数。

改变:

import 'package:flutter/material.dart';
import '../models/meal.dart';

class MealItem extends StatelessWidget {
final String title;
final String imageUrl;
final int duration;
final Complexity complexity;
final Affordability affordability;

// use parenthesis '{}' to wrap the constructor arguments to make them named arguments
MealItem({
this.title,
this.imageUrl,
this.duration,
this.complexity,
this.affordability
});
}
}

或者在创建 MealItem 时简单地删除名称并传递位置参数

此外:默认情况下位置参数是必需的,但命名参数不是。将它们更改为命名参数后,如果需要,请不要忘记将它们标记为 @required

这里也使用toList():

final categoryMeals = DUMMY_MEALS.where((meal) {
return meal.categories.contains(categoryId);
}).toList();

关于flutter - 运算符 '[]' 没有为类型 'Iterable<Meal>' 定义。尝试定义运算符 '[]' .dartundefined_operator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63063309/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com