【发布时间】:2023-01-17 21:12:05
【问题描述】:
我试图让我的提升按钮响应我在另一个小部件中创建的功能,但在它递增时遇到问题。有人可以协助并告诉我我做错了什么吗?我将所有内容都放在 answer.dart 文件中,以便它调用 answerQuestion 函数
import 'package:flutter/material.dart';
import './questions.dart';
import './answer.dart';
// Main that runs the MyApp class
void main() {
runApp(MyApp());
}
// Stateful MyApp
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _MyAppState();
}
}
// MyAppState Generic State
class _MyAppState extends State<MyApp> {
var _questionIndex = 0;
// ignore: unused_local_variable
void _answerQuestion() {
setState(() {
_questionIndex = _questionIndex + 1;
});
print(_questionIndex);
}
@override
Widget build(BuildContext context) {
// FIRST METHOD
// QUESTION VARIABLE
// ignore: unused_local_variable
var questions = [
'What\'s your favorite food?',
'What\'s your favorite color?'
];
// RETURNS MATERIAL APP FOR FLUTTER
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('My First App'),
),
body: Column(
children: [
Question(
questions[_questionIndex],
),
Answer(_answerQuestion),
Answer(_answerQuestion),
Answer(_answerQuestion),
],
),
),
);
}
}
回答.dart
import 'package:flutter/material.dart';
class Answer extends StatelessWidget {
final Function selectHandler;
Answer({Key? key, required this.selectHandler}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Color.fromARGB(255, 9, 131, 232),
),
child: Text('Answer'),
onPressed: () {
selectHandler;
},
),
);
}
}
问题.dart
import 'package:flutter/material.dart';
class Question extends StatelessWidget {
final String questionText;
Question(this.questionText);
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
margin: EdgeInsets.all(10.0),
child: Text(
questionText,
style: TextStyle(fontSize: 28),
textAlign: TextAlign.center,
),
);
}
}
【问题讨论】:
-
您能否包括相关部分,如
Question和Answer。 -
您可能没有在答案小部件内调用该方法。如果您提供 Answer 类,那就太好了
-
看来您缺少 ( 和 ) (或者只是删除包装它的匿名函数)