运行可禁用的窗口小部件时,范围错误会一直显示

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

这是我的代码

import 'package:flutter/material.dart';

void main() => runApp(TodoList());

class TodoList extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
// TODO: implement createState
return _TodoListState();
  }
}

var TaskTextField;
List taskTextList = [];
var TaskIsImportant = false;

class _TodoListState extends State<TodoList> {
  @override
  Widget build(BuildContext context) {
// TODO: implement build

return MaterialApp(
    title: "To-Do List V2",
    home: Scaffold(
        appBar: AppBar(
          title: Text("To-Do List V2"),
        ),
        body: Flex(
          direction: Axis.vertical,
          children: <Widget>[
            Flexible(
              fit: FlexFit.tight,
              child: Column(children: <Widget>[
                Container(
                  child: TextField(
                    decoration: InputDecoration(
                        hintText: "Enter title of task to be added"),
                    onChanged: (taskTextField) {
                      setState(() {
                        TaskTextField = taskTextField;
                        print(TaskTextField);
                      });
                    },
                  ),
                  margin: EdgeInsets.all(16.0),
                ),
                CheckboxListTile(
                  title: Text("Important"),
                  activeColor: Colors.blue,
                  value: TaskIsImportant,
                  onChanged: (val) {
                    setState(() {
                      TaskIsImportant = !TaskIsImportant;
                      print(TaskIsImportant);
                    });
                  },
                ),
                Text(
                  "Tip: Tap on your task to remove it",
                  style: TextStyle(fontSize: 15.0),
                ),
                Container(
                  margin: EdgeInsetsDirectional.fromSTEB(117, 10, 117, 5),
                  child: Row(
                    children: <Widget>[
                      RaisedButton(
                        child: Icon(Icons.add),
                        onPressed: () {
                          setState(() {
                            if (TaskIsImportant) {
                              taskTextList.add("❗️$TaskTextField");
                              //taskTitleList.add(TaskDetailField);
                            } else {
                              taskTextList.add(TaskTextField);
                              //taskTitleList.add(TaskDetailField);
                            }
                          });
                        },
                      ),
                      RaisedButton(
                        child: Icon(Icons.done_all),
                        onPressed: () {
                          setState(() {
                            taskTextList = [];
                          });
                        },
                      ),
                    ],
                  ),
                ),
                Expanded(
                  child: ListView.builder(
                    itemBuilder: (context, index) {
                      var title = taskTextList[index];
                      padding:
                      EdgeInsets.all(16.0);

                      return Dismissible(
                        key: Key(title[index]),
                        onDismissed: (direction) {
                          setState(() {
                            taskTextList.remove(title);
                          });
                        },
                        child: ListTile(
                          title: Text(
                            title,
                            style: TextStyle(fontSize: 20.0),
                          ),
                        ),
                      );
                    },
                    itemCount: taskTextList.length,
                  ),
                )
              ]),
            ),
          ],
        )));
  }
}

当我在模拟器中创建四个listTiles时,给出了两个错误,如下所示

flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
flutter: The following RangeError was thrown building:
flutter: RangeError (index): Invalid value: Not in range 0..3, inclusive: 4

我希望有人可以告诉我我的代码有什么问题。我正在使用颤振版1.3.10。提前致谢。

对于需要更多代码的人来说,这里是main.dart的完整代码。希望这能帮助您找到我的错误

flutter
1个回答
0
投票

您正在使用title[index]但将标题中的值保存为title = taskTextList[index],而不是数组。所以,你得到范围错误。

© www.soinside.com 2019 - 2024. All rights reserved.