我正在尝试使用两个枚举参数运行此应用程序,并将其发送到类似如下的屏幕:
import 'package:flutter/material.dart';
import '../widgets/meal_item.dart';
import '../models/meal.dart';
class CategoryMealsScreen extends StatelessWidget {
static const routeName = '/category-meals';
@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) {
print('a');
return meal.categories.contains(categoryId);
}).toList();
return Scaffold(
appBar: AppBar(
title: Text(categoryTitle),
),
body: ListView.builder(
itemBuilder: (ctx, index) {
return MealItem(
id: categoryMeals[index].id,
title: categoryMeals[index].title,
imageUrl: categoryMeals[index].imageUrl,
duration: categoryMeals[index].duration,
complexity: categoryMeals[index].complexity,
affordability: categoryMeals[index].affordability,
);
},
itemCount: categoryMeals.length,
),
);
}
}这是Meal.dart文件:
import 'package:flutter/foundation.dart';
enum Complexity {
Simple,
Challenging,
Hard,
}
enum Affordability {
Affordable,
Pricey,
Luxurious,
}
class Meal {
final String id;
final List<String> categories;
final String title;
final String imageUrl;
final List<String> ingredients;
final List<String> steps;
final int duration;
final Complexity complexity;
final Affordability affordability;
final bool isGlutenFree;
final bool isLactoseFree;
final bool isVegan;
final bool isVegetarian;
const Meal({
@required this.id,
@required this.categories,
@required this.title,
@required this.imageUrl,
@required this.ingredients,
@required this.steps,
@required this.duration,
@required this.complexity,
@required this.affordability,
@required this.isGlutenFree,
@required this.isLactoseFree,
@required this.isVegan,
@required this.isVegetarian,
});
}如果我注释上面第一行代码的这两行,应用程序运行得很好:
complexity: categoryMeals[index].complexity,
affordability: categoryMeals[index].affordability,即使在运行之后,如果我取消它们的注释,并使用热重载重新加载它,它也可以正常工作,没有任何问题,除非我运行应用程序时没有注释它们,那么我会收到这个错误:
Launching lib\main.dart on Android SDK built for x86 in debug mode...
Running Gradle task 'assembleDebug'...
lib/screens/category_meals_screen.dart:31:46: Error: The argument type 'Complexity/*1*/' can't be assigned to the parameter type 'Complexity/*2*/'.
- 'Complexity/*1*/' is from 'lib/models/meal.dart'.
- 'Complexity/*2*/' is from 'package:deliMeals/models/meal.dart' ('lib/models/meal.dart').
complexity: categoryMeals[index].complexity,
^
lib/screens/category_meals_screen.dart:32:49: Error: The argument type 'Affordability/*1*/' can't be assigned to the parameter type 'Affordability/*2*/'.
- 'Affordability/*1*/' is from 'lib/models/meal.dart'.
- 'Affordability/*2*/' is from 'package:deliMeals/models/meal.dart' ('lib/models/meal.dart').
affordability: categoryMeals[index].affordability,
^
FAILURE: Build failed with an exception.发布于 2020-10-18 01:27:29
这个问题不明确,但可以通过替换导入行来解决
import '../dummy_data.dart';使用这一条
import 'package:deliMeals/dummy_data.dart';谁能解释一下有什么不同?
发布于 2020-10-17 23:25:08
您好,请试一下……更改此文件CategoryMealsScreen的导入语法
从import '../models/meal.dart'到package:deliMeals/models/meal.dart
发布于 2021-08-27 02:55:59
如果这与颤振教程有关,则这可能是由不一致的包含引起的。检查所有文件,并确保所有包含的内容一致
请参阅下面的不一致。
import '/models/meal.dart'; (file1)
import 'package:flutter_complete_guide/models/Meal.dart'; (file2)将其更改为
import '/models/meal.dart'; (file1)
import '/models/meal.dart'; (file2)还要确保没有重复的文件名。最后,通过关闭文件夹并再次打开它,在Visual Code中关闭项目。
https://stackoverflow.com/questions/64403921
复制相似问题