I have made 1 scoring sheet, but we have 2 rounds so I need x 2 next to each other I was looking at cells and columns, but not sure what to use or how to implement them into the code.
Code and screenshot of what I'm after - thanks all.
Code
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,
),
),
],
),
],
),
),
);
}
}
I have tried the above with cells and columns but I just get to many errors to work out where I'm going wrong sorry for the newbie mistakes.
See you just need a row and column and putting all the textfields and title will do your job.
Rather i have made you some improvements as used a list of TextEditingController
rather sepreate variables and ListView.builders
rather than taking a separate text and textfield 20 times.
import 'package:flutter/material.dart';
void main() {
runApp(const MaterialApp(home: AddTwoNumbers()));
}
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 Scaffold(
body: SingleChildScrollView(
child: Column(
children: <Widget>[
Row(
children: [
Expanded(
child: 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(),
),
),
const SizedBox(
width: 24,
),
Expanded(
child: 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],
),
),
],
),
),
),
],
),
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,
),
),
],
),
),
);
}
}