Flutter开发报错:Undefined name 'questionList' 求助
问题原因及解决方法
你遇到的Undefined name 'questionList'错误,是因为你把questionList定义成了Question类的实例属性——只有创建Question对象后才能访问它,但你需要直接调用这个列表,所以得调整它的定义方式。
方案一:将列表改为类的静态属性
修改/lib/model/question_model.dart中的代码,给questionList加上static关键字,让它成为类的静态成员:
class Question { String question; String answer1; String answer2; int trueAnswer; String imageAddress; Question(this.question, this.answer1, this.answer2, this.trueAnswer, this.imageAddress); // 改为静态属性,属于类而非实例 static List<Question> questionList = [ Question('Where is Persian Gulf?', 'Iran', 'Iraq', 1, 'assets/images/persiangulf.png'), Question('Which one is most population country in the world?', 'India', 'China', 2, 'assets/images/most.png'), Question('Which one created GTA series?', 'Ubisoft', 'Rockstar', 1, 'assets/images/GTA.png'), Question('Which one is a rock band?', 'Queen', 'Metallica', 1, 'assets/images/guitar.png'), ]; }
之后在主代码中调用时,需要通过类名访问:
checkAnswer(){ setState(() {}); int myAnswer = isOnePressed?1:2; // 通过类名访问静态列表 Question.questionList[currentQuestionNumber]; }
方案二:将列表移到类外部作为全局变量
如果不想用静态属性,也可以把questionList放在Question类外面,作为全局变量:
class Question { String question; String answer1; String answer2; int trueAnswer; String imageAddress; Question(this.question, this.answer1, this.answer2, this.trueAnswer, this.imageAddress); } // 全局列表,可直接在其他文件中调用 List<Question> questionList = [ Question('Where is Persian Gulf?', 'Iran', 'Iraq', 1, 'assets/images/persiangulf.png'), Question('Which one is most population country in the world?', 'India', 'China', 2, 'assets/images/most.png'), Question('Which one created GTA series?', 'Ubisoft', 'Rockstar', 1, 'assets/images/GTA.png'), Question('Which one is a rock band?', 'Queen', 'Metallica', 1, 'assets/images/guitar.png'), ];
这种方式下,主代码中的调用不需要修改,但要确保主文件顶部正确导入了model文件:
import 'package:你的项目名/lib/model/question_model.dart';
内容的提问来源于stack exchange,提问作者Armin youuu
相关产品推荐
相关产品推荐

