這是 main.dart 檔案:
import 'package:flutter/material.dart';
import './question.dart';
import './answer.dart';
import 'package:path/path.dart';
void main() {
runApp(MyFirstApp());
}
class MyFirstApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _MyFirstAppState();
}
}
class _MyFirstAppState extends State<MyFirstApp> {
var _questionIndex = 0;
void _ansButtonPress(context) {
setState(() {
_questionIndex = _questionIndex 1;
});
}
var questions = ['favorate color ', 'favorate animal', 'where is this'];
var answers = ['Option 1', 'Option 2', 'Option 3'];
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('My first app '),
),
body: Column(
children: [
Question(
questions[_questionIndex],
),
Answer(_ansButtonPress),
Answer(_ansButtonPress),
Answer(_ansButtonPress),
],
),
),
);
}
}
這是 answwers.dart 檔案:
import 'package:flutter/material.dart';
class Answer extends StatelessWidget {
final Function selectHandler;
Answer(this.selectHandler);
// const Answer({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
child: RaisedButton(
color: Colors.blue,
child: Text('Answer 1'),
onPressed: selectHandler,
),
);
}
}`enter code here`
[enter image description here][1]
這是questions.dart:
import 'package:flutter/material.dart';
class Answer extends StatelessWidget {
final Function selectHandler;
Answer(this.selectHandler);
// const Answer({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
child: RaisedButton(
color: Colors.blue,
child: Text('Answer 1'),
onPressed: selectHandler,
),
);
}
}

我正在通過觀看教程來開發測驗應用程式,我只是一個初學者,現在面臨錯誤。我無法修復它,我添加了代碼和錯誤。
lib/answer.dart:16:20: 錯誤:無法將引數型別“Function”分配給引數型別“void Function()?”。
- “函式”來自“dart:core”。onPressed: selectHandler,
uj5u.com熱心網友回復:
有onPressed問題的按鈕的屬性是 a VoidCallback?,因此為了便于使用,也將您的屬性VoidCallback設為a (是否可以為空取決于您):
final Function selectHandler;
變成
final VoidCallback selectHandler;
然后確保你傳遞給這個屬性的方法實際上是這個簽名:
void _ansButtonPress(context) {
變成
void _ansButtonPress() {
無論如何,我不知道那個“背景關系”應該做什么,它沒有被使用。
現在它應該可以作業了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/374338.html
