我是Flutter的新手。我正在构建一个测验应用程序,并有以下三个dart文件:
主.dart
import 'package:flutter/material.dart';
import './answer.dart';
import './question.dart';
void main(){
runApp(MyApp());
}
class MyApp extends StatefulWidget {
State<StatefulWidget> createState(){
return _MyAppState();
}
}
class _MyAppState extends State<MyApp>{
var _questionIndex = 0;
_answerQuestion(){
setState(() {
_questionIndex = _questionIndex + 1;
});
}
@override
Widget build(BuildContext context) {
var questions = [
{'questionText': 'What\'s your favourite color ?',
'answers': ['Red','Blue','White','Black']
},
{'questionText': 'What\'s your favourite Animal ?',
'answers': ['Dog','Rabbit','Tiger','Monkey']
},
{'questionText': 'What\'s your favourite Day ?',
'answers': ['Tuesday','Monday','Sunday','Friday','Wednesday','Saturday']
},
];
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('My First App'),
),
body: Column(
children: [
Question(questions[_questionIndex]['questionText'] as String,
),
...(questions[_questionIndex]['answers'] as List).map((answer) {
return Answer(_answerQuestion(),answer);
}).toList()
],
)
),
);
}
}
字符串
**问题. dart **
import 'package:flutter/material.dart';
class Question extends StatelessWidget {
final String questions;
Question(this.questions);
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
margin: EdgeInsets.all(10),
child:(
Text(
questions,
style: TextStyle(
fontSize: 25),
textAlign: TextAlign.center,)
),
);
}
}
型
**答案. dart **
import 'package:flutter/material.dart';
class Answer extends StatelessWidget {
final Function buttonHandler;
final String answer;
Answer(this.buttonHandler,this.answer);
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
child: ElevatedButton(
child: Text(answer),
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(Colors.blue),
foregroundColor: MaterialStateProperty.all(Colors.white)
),
onPressed: () => buttonHandler,
),
);
}
}
型
当我在Android Studio中运行我的Android应用程序时,我得到这个错误:
由WIDGETS LIBRARY提供的电子邮件例外情况
构建MyApp(dirty,state:_MyAppState#7f7de)时抛出以下_TypeError:
类型"函数“不是类型”函数“的子类型
导致错误的相关小部件是:
MyApp文件:/C:/src/first_app/lib/main. dart:7:10
3条答案
按热度按时间jdzmm42g1#
这一点:
字符串
必须是:
型
或
型
这取决于您的处理程序是否与所需的签名完全匹配。
此外,这:
型
需要
型
一般来说,你已经把 * 调用 * 一个方法和 * 传递 * 一个方法作为一个参数混淆了几次,你可能想更熟悉它。
h9a6wy2h2#
首先,你必须传递一个函数结构,而不是通过调用它来返回函数的值。
你在下面声明了这个函数:
字符串
并传递了返回值而不是函数结构,如下所示:
型
正如你所看到的,_answerQuestion()的返回值是。
型
你需要调用Answer组件中的函数。
型
或
型
vptzau2j3#
你的代码工作正常尝试flutter clean