【发布时间】:2021-10-16 22:14:47
【问题描述】:
我正在尝试构建一个 Flutter 测验制作应用程序,但遇到了一些错误。我在实施时遇到的错误如下:
错误 1:必须初始化不可为空的实例字段“_isLoading”。
错误 2:“Set
代码如下:
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:quizmaker/services/database.dart';
import 'package:quizmaker/widgets/widgets.dart';
class AddQuestion extends StatefulWidget {
final String? quizId;
AddQuestion(this.quizId);
@override
_AddQuestionState createState() => _AddQuestionState();
}
class _AddQuestionState extends State<AddQuestion> {
final _formKey = GlobalKey<FormState>();
String? question, option1, option2, option3, option4;
bool _isLoading;
DatabaseServices databaseService = new DatabaseServices();
uploadQuizData(){
if(_formKey.currentState!.validate()){
Map<String, String> questionMap = {
"question" = question,
"option1" = option1,
"option2" = option2,
"option3" = option3,
"option4" = option4,
};
databaseService.addQuestionData(questionMap, widget.quizId.toString());
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: appBar(context),
backgroundColor: Colors.transparent,
elevation: 0,
iconTheme: IconThemeData(color: Colors.black87),
brightness: Brightness.light,
),
body: Container(
padding: EdgeInsets.symmetric(
horizontal: 24.0,
),
child: _isLoading ? Container(
child: Center(
child: CircularProgressIndicator(),
),
) : Container(
padding: EdgeInsets.symmetric(horizontal: 24.0),
child: Column(
children: [
TextFormField(
validator: (value) => value!.isEmpty ? "Enter Question" : null,
decoration: InputDecoration(
hintText: "Question",
),
onChanged: (value) {
question = value;
},
),
SizedBox(
height: 6.0,
),
TextFormField(
validator: (value) => value!.isEmpty ? "Enter Option1" : null,
decoration: InputDecoration(
hintText: "Option 1 (Correct Answer)",
),
onChanged: (value) {
option1 = value;
},
),
SizedBox(
height: 6.0,
),
TextFormField(
validator: (value) => value!.isEmpty ? "Enter Option2" : null,
decoration: InputDecoration(
hintText: "Option 2",
),
onChanged: (value) {
option2 = value;
},
),
SizedBox(
height: 6.0,
),
TextFormField(
validator: (value) => value!.isEmpty ? "Enter Option3" : null,
decoration: InputDecoration(
hintText: "Option 3",
),
onChanged: (value) {
option3 = value;
},
),
SizedBox(
height: 6.0,
),
TextFormField(
validator: (value) => value!.isEmpty ? "Enter Option4" : null,
decoration: InputDecoration(
hintText: "Option 4",
),
onChanged: (value) {
option4 = value;
},
),
Spacer(),
Row(
children: [
blueButton(
context: context,
label: "Submit",
buttonWidth: MediaQuery.of(context).size.width / 2 - 36,
),
SizedBox(
width: 24.0,
),
GestureDetector(
onTap: (){
setState(() {
});
},
child: blueButton(
context: context,
label: "Add Question",
buttonWidth: MediaQuery.of(context).size.width / 2 - 36,
),
),
SizedBox(
height: 60.0,
),
],
),
],
),
),
),
);
}
}
【问题讨论】:
标签: flutter dart flutter-layout flutter-dependencies flutter-web