我如何在这张分数表中再添加一列,附上我所期望的图片所有数学都很好,只需要复制

问题描述 投票:0回答:1

我已经制作了 1 个评分表,但我们有 2 轮,所以我需要 x 2 彼此相邻,我正在查看单元格和列,但不确定使用什么或如何将它们实现到代码中。
下面的代码带有我之后的图片,谢谢大家。

enter image description here

代码

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,
                  ),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

我已经尝试了上述的单元格和列,但我只是遇到了很多错误来找出我出错的地方,对于新手的错误表示歉意。

flutter listview row multiple-columns calculated-columns
1个回答
0
投票

您只需要一行和一列,放置所有文本字段和标题即可完成您的工作。

相反,我对您做了一些改进,因为使用了

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,
            ),
          ),
        ],
      ),
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.