我已经制作了 1 个评分表,但我们有 2 轮,所以我需要 x 2 彼此相邻,我正在查看单元格和列,但不确定使用什么或如何将它们实现到代码中。
下面的代码带有我之后的图片,谢谢大家。
代码
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final appTitle = 'Twin City Bowmen Score Sheet';
return MaterialApp(
title: appTitle,
home: Scaffold(
appBar: AppBar(
title: Text(appTitle),
),
body: AddTwoNumbers(),
),
);
}
}
class AddTwoNumbers extends StatefulWidget {
@override
_AddTwoNumbersState createState() => _AddTwoNumbersState();
}
class _AddTwoNumbersState extends State<AddTwoNumbers> {
TextEditingController num1controller = new TextEditingController();
TextEditingController num2controller = new TextEditingController();
TextEditingController num3controller = new TextEditingController();
TextEditingController num4controller = new TextEditingController();
TextEditingController num5controller = new TextEditingController();
TextEditingController num6controller = new TextEditingController();
TextEditingController num7controller = new TextEditingController();
TextEditingController num8controller = new TextEditingController();
TextEditingController num9controller = new TextEditingController();
TextEditingController num10controller = new TextEditingController();
TextEditingController num11controller = new TextEditingController();
TextEditingController num12controller = new TextEditingController();
TextEditingController num13controller = new TextEditingController();
TextEditingController num14controller = new TextEditingController();
TextEditingController num15controller = new TextEditingController();
TextEditingController num16controller = new TextEditingController();
TextEditingController num17controller = new TextEditingController();
TextEditingController num18controller = new TextEditingController();
TextEditingController num19controller = new TextEditingController();
TextEditingController num20controller = new TextEditingController();
String result = "0";
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Container(
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Text("Target 1:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num1controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 2:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num2controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 3:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num3controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 4:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num4controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 5:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num5controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 6:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num6controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 7:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num8controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 8:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num9controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 9:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num10controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 10:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num11controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 11:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num12controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 12:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num13controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 13:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num14controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 14:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num15controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 15:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num16controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 16:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num17controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 17:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num18controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 18:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num19controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 19:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num20controller,
),
),
],
),
Row(
children: <Widget>[
Text("Target 20:"),
new Flexible(
child: new TextField(
keyboardType: TextInputType.number,
controller: num7controller,
),
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
child: Text("Add"),
onPressed: () {
setState(() {
int sum = int.parse(num1controller.text) +
int.parse(num2controller.text) +
int.parse(num3controller.text) +
int.parse(num4controller.text) +
int.parse(num5controller.text) +
int.parse(num6controller.text) +
int.parse(num7controller.text) +
int.parse(num8controller.text) +
int.parse(num9controller.text) +
int.parse(num10controller.text) +
int.parse(num11controller.text) +
int.parse(num12controller.text) +
int.parse(num13controller.text) +
int.parse(num14controller.text) +
int.parse(num15controller.text) +
int.parse(num16controller.text) +
int.parse(num17controller.text) +
int.parse(num18controller.text) +
int.parse(num19controller.text) +
int.parse(num20controller.text);
result = sum.toString();
});
},
)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"Result:",
style: TextStyle(
fontSize: 30,
),
),
Text(
result,
style: TextStyle(
fontSize: 30,
),
),
],
),
],
),
),
);
}
}
我已经尝试了上述的单元格和列,但我只是遇到了很多错误来找出我出错的地方,对于新手的错误表示歉意。
您只需要一行和一列,放置所有文本字段和标题即可完成您的工作。
相反,我对您做了一些改进,因为使用了
TextEditingController
列表而不是单独的变量和 ListView.builders
,而不是采用单独的文本和文本字段 20 次。
class AddTwoNumbers extends StatefulWidget {
const AddTwoNumbers({super.key});
@override
State<AddTwoNumbers> createState() => _AddTwoNumbersState();
}
class _AddTwoNumbersState extends State<AddTwoNumbers> {
List<TextEditingController> roundOneFields = [];
List<TextEditingController> roundTwoFields = [];
int roundOneResult = 0;
int roundTwoResult = 0;
@override
void initState() {
roundOneFields =
List.generate(20, (index) => TextEditingController(text: '0'));
roundTwoFields =
List.generate(20, (index) => TextEditingController(text: '0'));
super.initState();
}
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Column(
children: <Widget>[
Row(
children: [
ListView.builder(
itemCount: 20,
shrinkWrap: true,
itemBuilder: (context, index) => Row(
children: <Widget>[
Text("R1 Target ${index + 1}:"),
Flexible(
child: TextField(
decoration: const InputDecoration(
contentPadding:
EdgeInsets.symmetric(horizontal: 8)),
keyboardType: TextInputType.number,
controller: roundOneFields[index],
),
),
],
),
physics: const BouncingScrollPhysics(),
).expand(),
const SizedBox(
width: 24,
),
ListView.builder(
itemCount: 20,
shrinkWrap: true,
physics: const BouncingScrollPhysics(),
itemBuilder: (context, index) => Row(
children: <Widget>[
Text("R2 Target ${index + 1}:"),
Flexible(
child: TextField(
decoration: const InputDecoration(
contentPadding:
EdgeInsets.symmetric(horizontal: 8)),
keyboardType: TextInputType.number,
controller: roundTwoFields[index],
),
),
],
),
).expand(),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
child: const Text("Add"),
onPressed: () {
setState(() {
roundOneFields.forEach((e) =>
roundOneResult = roundOneResult + int.parse(e.text));
roundTwoFields.forEach((e) => roundTwoResult =
roundTwoResult + int.parse(e.text.toString()));
});
},
)
],
),
Text(
"Result \n Round 1: $roundOneResult and Round 2: $roundTwoResult",
textAlign: TextAlign.center,
style: const TextStyle(
fontSize: 30,
),
),
],
),
);
}
}