【发布时间】:2020-11-04 14:17:28
【问题描述】:
在代码中添加 List 和 toList() 后编译我的应用程序时,我得到错误类型 'String' is not a subtype of type 'List' in type cast:
这是包含List和toList()代码的main.dart,取出这些代码后我的应用程序可以正常运行,不知道是什么地方出错了。 我在VS Code中没有发现任何错误行,但是编译器cmd和应用程序出现错误:
import 'package:flutter/material.dart';
import './question.dart';
import './answer.dart';
void main() {
runApp(MyApps());
}
class MyApps extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return MyAppsState();
}
}
class MyAppsState extends State<MyApps> {
int indexQuestion = 0;
void answerQuestion() {
setState(() {
indexQuestion += 1;
});
if (indexQuestion > 1) {
indexQuestion = 1;
}
print('add index by 1');
}
Widget build(BuildContext context) {
var questions = [
{
'questionText': 'What\'s your favorite animal?',
'answers': ['cat', 'dog', 'elephant', 'fish'],
},
{
'questionText': 'What\'s your favorite color?',
'answers': ['red', 'green', 'blue', 'black'],
},
];
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('My First App Yo!'),
),
body: Column(
children: [
Question(
questions[indexQuestion]['questionText'],
),
**//==============PROBLEM HERE===================================**
...(questions[indexQuestion]['questionText'] as List<String>)
.map((answer) {
return Answer(answerQuestion, answer);
}).toList(),
**//===============================================================**
RaisedButton(
onPressed: resetIndex,
child: Text('Reset'),
),
],
)),
);
}
}
这是answer.dart:
import 'package:flutter/material.dart';
class Answer extends StatelessWidget {
final Function selectHandler;
final String answerText;
Answer(this.selectHandler, this.answerText);
@override
Widget build(BuildContext context) {
return Column(children: [
Container(
width: double.infinity,
margin: EdgeInsets.only(left: 50, right: 50),
child: RaisedButton(
child: Text('Answer1'),
color: Colors.blue,
onPressed: () => selectHandler(),
),
)
]);
}
}
这是question.dart:
import 'package:flutter/material.dart';
class Question extends StatelessWidget {
final String questionText;
Question(this.questionText);
// Question({String questionTextoption}) {
// questionText = questionTextoption;
// }
@override
Widget build(BuildContext context) {
return Container(
child: Text(
'aaa $questionText',
style: TextStyle(fontSize: 28),
textAlign: TextAlign.center,
maxLines: 2,
),
width: double.infinity,
margin: EdgeInsets.all(10),
);
}
}
我只是按照 Flutter 教程学习并卡在这里,现在任何帮助都会对我有所帮助。 提前感谢您的帮助。
【问题讨论】:
标签: flutter