首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter -参数类型'Complexity/*1*/‘不能分配给参数类型'Complexity/*2*/’

Flutter -参数类型'Complexity/*1*/‘不能分配给参数类型'Complexity/*2*/’
EN

Stack Overflow用户
提问于 2020-10-17 23:06:27
回答 5查看 305关注 0票数 1

我正在尝试使用两个枚举参数运行此应用程序,并将其发送到类似如下的屏幕:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
    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,
  });
}

如果我注释上面第一行代码的这两行,应用程序运行得很好:

代码语言:javascript
复制
complexity: categoryMeals[index].complexity,
affordability: categoryMeals[index].affordability,

即使在运行之后,如果我取消它们的注释,并使用热重载重新加载它,它也可以正常工作,没有任何问题,除非我运行应用程序时没有注释它们,那么我会收到这个错误:

代码语言:javascript
复制
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.
EN

回答 5

Stack Overflow用户

发布于 2020-10-18 01:27:29

这个问题不明确,但可以通过替换导入行来解决

代码语言:javascript
复制
import '../dummy_data.dart';

使用这一条

代码语言:javascript
复制
import 'package:deliMeals/dummy_data.dart';

谁能解释一下有什么不同?

票数 3
EN

Stack Overflow用户

发布于 2020-10-17 23:25:08

您好,请试一下……更改此文件CategoryMealsScreen的导入语法

import '../models/meal.dart'package:deliMeals/models/meal.dart

票数 2
EN

Stack Overflow用户

发布于 2021-08-27 02:55:59

如果这与颤振教程有关,则这可能是由不一致的包含引起的。检查所有文件,并确保所有包含的内容一致

请参阅下面的不一致。

代码语言:javascript
复制
import '/models/meal.dart'; (file1)
import 'package:flutter_complete_guide/models/Meal.dart'; (file2)

将其更改为

代码语言:javascript
复制
import '/models/meal.dart'; (file1)
import '/models/meal.dart'; (file2)

还要确保没有重复的文件名。最后,通过关闭文件夹并再次打开它,在Visual Code中关闭项目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64403921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档