![](/img/trans.png)
[英]The argument type 'String' can't be assigned to the parameter type 'Uri'. Flutter
[英]Flutter - argument type 'Complexity/*1*/' can't be assigned to the parameter type 'Complexity/*2*/
我正在尝试使用发送到屏幕的两个枚举参数来运行此应用程序,如下所示:
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.
问题不明确,但通过更换导入线解决了
import '../dummy_data.dart';
有了这个
import 'package:deliMeals/dummy_data.dart';
谁能解释一下有什么区别?
嗨,请尝试这种方式...更改此文件CategoryMealsScreen
导入语法
从import '../models/meal.dart'
到package:deliMeals/models/meal.dart
我遇到了同样的问题,发现问题出在 dummy_data.dart 文件和导入 './models/Meal.dart'; 有问题。
尝试改变
导入'./models/Meal.dart'; 导入'./models/meal.dart';
用小写的“m”,问题就解决了。
我遇到了同样的问题,然后我将每个文件的导入语法从import '../models/meal.dart
' 更改为package:deliMeals/models/meal.dart
,我删除了../
并编写了整个路径在每个文件中
然后我在终端运行
flutter clean
flutter Pub get
它工作得很好
如果这是关于颤振教程,这可能是由不一致的包含引起的。 检查所有文件并确保所有包含的内容一致
请参阅下面的不一致。
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 中的项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.