当前位置: 首页 > 面试题库 >

Flutter:无法将类型为lib1 :: Object的值分配给类型为lib2 :: Object的变量

景帅
2023-03-14
问题内容

尝试编译此代码时:

import 'package:flutter/material.dart';
import 'package:startup_namer/misc/Constants.dart';
import 'package:startup_namer/ui/question_text.dart';
import '../utils/question.dart';
import '../utils/quiz.dart';
import '../ui/answer_button.dart';
import '../ui/correct_wrong_overlay.dart';

class QuizPage extends StatefulWidget {
    @override
    State createState() => new QuizPageState();
}

//States are mutable
class QuizPageState extends State<QuizPage> {

    static List<Question> quizQuestions = [
        new Question("5 * 5 = 25", true),
        new Question("4 + 2 = 6", true),
        new Question("4 + 2 = 7", false),
        new Question("Computers don't use energy", false),
        new Question("B is after A in the alphabet", false),
    ];

    Question currentQuestion;
    Quiz quiz = new Quiz(quizQuestions);

    String questionText;
    int questionNumber;
    bool isCorrect, overlayShouldBeVisible = false;


    @override
    void initState() {
        super.initState();
        this.currentQuestion = this.quiz.nextQuestion;
        this.questionText = this.currentQuestion.aQuestion;
        this.questionNumber = this.quiz.questionNumber;
    }

    @override
    Widget build(BuildContext context) {
        return new Stack( 
            fit: StackFit.expand,
            children: <Widget>[
                //Container for tons of stuff (Main page essentially)
                new Column(
                    children: <Widget>[
                        new AnswerButton(true,  () => testMe(true)),
                        new QuestionText(this.questionText, this.questionNumber),
                        new AnswerButton(false, () => testMe(false)),
                    ], //<Widget>[]
                ), //Column
                (this.overlayShouldBeVisible) ? new CorrectWrongOverlay(true) : new Container()
            ] //<Widget>[]
        ); //Stack
    }
}

void testMe(bool isTrue){
    if(isTrue){
        print("it is true, huzzah!");
    } else {
        print("it is false, :(");
    }
}

我收到此错误:

Error: A value of type 'dart.core::List<#lib1::Question>' can't be assigned to a variable of type 'dart.core::List<#lib2::Question>'.

我正在按照本教程系列进行学习,并已针对其存储库检查了代码,但无法查看导致此问题的原因。

如果没有其他与之冲突的模棱两可的 Question 类,为什么会看到此强制转换错误?


问题答案:

事实证明,这个问题与进口的申报方式如何有关。

我在其他地方没有看到此问题,因此我将在此处回答问题。从这些更新我的进口:

import '../utils/question.dart';
import '../utils/quiz.dart';
import '../ui/answer_button.dart';
import '../ui/correct_wrong_overlay.dart';

对这些

import 'package:startup_namer/utils/question.dart';
import 'package:startup_namer/utils/quiz.dart';
import 'package:startup_namer/ui/answer_button.dart';
import 'package:startup_namer/ui/correct_wrong_overlay.dart';

我在使用完整的软件包声明而不是速记版本的地方似乎可以解决此问题。



 类似资料:
  • 问题内容: 有关语法的简单问题。为什么限制这样的表达式: 并只允许以下内容: ? 问题答案: 这是因为方法引用或lambda表达式的目标类型应该是功能接口。仅基于此,运行时将创建提供给定功能接口的实现的类的实例。将lambda或方法引用视为概念。将其分配给功能接口类型将赋予其具体含义。 此外,特定的lambda或方法引用可以具有多个功能接口作为其目标类型。例如,考虑以下lamda: 这个lambd

  • 问题内容: 这是我写该行时的错误: /ChatApp/ViewController.swift:27:42:无法将“ ViewController”类型的值分配给“ UITextFieldDelegate”类型的值? 这是我的Swift代码(ViewerController.swift): 问题答案: 该生产线将导致错误,因为你尝试分配作为的。 但是,你 是不是 一个。为了使您的课程成为此类委托,

  • 我正在开发一个聊天应用程序,希望允许用户使用电子邮件和密码注册。出于某种原因,我得到了下面的错误-这个实现是不正确的吗?我不知道为什么会出现“错误:类型为“AuthResult”的值不能赋给类型为“FirebaseUser”的变量。”

  • 我刚刚更新到Dart2和Flatter sdk:' 无法将参数类型“Object”指定给参数类型“ImageProvider”。), 我只是从弗利特开始,不知道该去哪里找别的。

  • 由于最近的更新,我正面临这个问题,请伙计们帮帮我

  • 问题内容: 更新到xcode 8 beta 6后,出现错误 无法将’()-> Void’类型的值分配给’(()-> Void)!’ 在以下func块的第三行: 关于修复的任何建议? 问题答案: 看来您的问题与此有关: SE-0103 尝试将您的方法标头追踪到: 与往常一样,来自新Beta的诊断消息是如此混乱和不足,但是将您的媒体资源设置为非可选将为您提供更多有用的信息。

  • 我正在构建一个nativescript应用程序,并在tns构建Android时得到这些错误: src/app/services/cabin.service.ts(21,86):错误TS2345:类型为“Object”的参数不能分配给类型为“Response”的参数。“Object”类型可分配给极少数其他类型。您的意思是使用“any”类型来代替吗?类型“Object”中缺少属性“type”。src/

  • 到目前为止,我们看到的大多数引用类型值都是Object 类型的实例;而且,Object 也是ECMAScript 中使用最多的一个类型。虽然Object 的实例不具备多少功能,但对于在应用程序中存储和传输数据而言,它们确实是非常理想的选择。 创建Object 实例的方式有两种。第一种是使用new 操作符后跟Object 构造函数,如下所示: var person = new Object(); p