我是Flutter的初学者,目前正在跟着教程搭建一个任务计划器(https:/www.youtube.comwatch?v=xJSestoFlJ8&list=PLF9bFmu3NqWqchwS3DO9MDSl15IiHQWcr&index=9。)
在手工重写了代码(数据库等)后,当我重新启动app在调试控制台中显示我保存到数据库中的项目时,我得到了一个错误,说在使用initstate和setstate工作时
Unhandled Exception: type 'String' is not a subtype of type 'int' of 'index'
以下是与该错误相关的代码
final TextEditingController _textEditingController = TextEditingController();
var db = DatabaseHelper();
@override
void initState() {
super.initState();
_readTaskList();
}
void _handleSubmitted(String text) async {
_textEditingController.clear();
Tasks tasksItem = Tasks(text, DateTime.now().toIso8601String());
int savedItemId = await db.saveItem(tasksItem);
print("Item saved ID: $savedItemId");
}
_readTaskList() async {
List items = await db.getItems();
items.forEach((item) {
Tasks tasksItem = Tasks.map(items);
print("DB Items: ${tasksItem.itemName}");
});
}
这里是完整的调试控制台日志
E/flutter ( 8249): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type 'String' is not a subtype of type 'int' of 'index'
E/flutter ( 8249): #0 new Tasks.map
package:gatorblocks_rbt/models/tasks.dart:12
E/flutter ( 8249): #1 _TaskPlannerState._readTaskList.<anonymous closure>
package:gatorblocks_rbt/pages/taskPlanner.dart:105
E/flutter ( 8249): #2 List.forEach (dart:core-patch/growable_array.dart:285:8)
E/flutter ( 8249): #3 _TaskPlannerState._readTaskList
package:gatorblocks_rbt/pages/taskPlanner.dart:104
E/flutter ( 8249): <asynchronous suspension>
E/flutter ( 8249): #4 _TaskPlannerState.initState
package:gatorblocks_rbt/pages/taskPlanner.dart:24
E/flutter ( 8249): #5 StatefulElement._firstBuild
package:flutter/…/widgets/framework.dart:4355
E/flutter ( 8249): #6 ComponentElement.mount
package:flutter/…/widgets/framework.dart:4201
E/flutter ( 8249): #7 Element.inflateWidget
package:flutter/…/widgets/framework.dart:3194
E/flutter ( 8249): #8 Element.updateChild
package:flutter/…/widgets/framework.dart:2988
E/flutter ( 8249): #9 SingleChildRenderObjectElement.mount
package:flutter/…/widgets/framework.dart:5445
E/flutter ( 8249): #10 Element.inflateWidget
package:flutter/…/widgets/framework.dart:3194
E/flutter ( 8249): #11 Element.updateChild
package:flutter/…/widgets/framework.dart:2988
E/flutter ( 8249): #12 ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4243
E/flutter ( 8249): #13 Element.rebuild
package:flutter/…/widgets/framework.dart:3947
E/flutter ( 8249): #14 ComponentElement._firstBuild
package:flutter/…/widgets/framework.dart:4206
E/flutter ( 8249): #15 ComponentElement.mount
package:flutter/…/widgets/framework.dart:4201
E/flutter ( 8249): #16 Element.inflateWidget
package:flutter/…/widgets/framework.dart:3194
E/flutter ( 8249): #17 Element.updateChild
package:flutter/…/widgets/framework.dart:2988
E/flutter ( 8249): #18 SingleChildRenderObjectElement.mount
package:flutter/…/widgets/framework.dart:5445
E/flutter ( 8249): #19 Element.inflateWidget
package:flutter/…/widgets/framework.dart:3194
E/flutter ( 8249): #20 Element.updateChild
package:flutter/…/widgets/framework.dart:2988
E/flutter ( 8249): #21 SingleChildRenderObjectElement.mount
package:flutter/…/widgets/framework.dart:5445
E/flutter ( 8249): #22 Element.inflateWidget
package:flutter/…/widgets/framework.dart:3194
E/flutter ( 8249): #23 Element.updateChild
package:flutter/…/widgets/framework.dart:2988
E/flutter ( 8249): #24 ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4243
E/flutter ( 8249): #25 Element.rebuild
package:flutter/…/widgets/framework.dart:3947
E/flutter ( 8249): #26 ComponentElement._firstBuild
package:flutter/…/widgets/framework.dart:4206
E/flutter ( 8249): #27 StatefulElement._firstBuild
package:flutter/…/widgets/framework.dart:4381
E/flutter ( 8249): #28 ComponentElement.mount
package:flutter/…/widgets/framework.dart:4201
E/flutter ( 8249): #29 Element.inflateWidget
package:flutter/…/widgets/framework.dart:3194
E/flutter ( 8249): #30 Element.updateChild
package:flutter/…/widgets/framework.dart:2988
E/flutter ( 8249): #31 SingleChildRenderObjectElement.mount
package:flutter/…/widgets/framework.dart:5445
E/flutter ( 8249): #32 Element.inflateWidget
package:flutter/…/widgets/framework.dart:3194
E/flutter ( 8249): #33 Element.updateChild
package:flutter/…/widgets/framework.dart:2988
E/flutter ( 8249): #34 SingleChildRenderObjectElement.mount
package:flutter/…/widgets/framework.dart:5445
E/flutter ( 8249): #35 Element.inflateWidget
package:flutter/…/widgets/framework.dart:3194
E/flutter ( 8249): #36 Element.updateChild
package:flutter/…/widgets/framework.dart:2988
E/flutter ( 8249): #37 ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4243
E/flutter ( 8249): #38 Element.rebuild
package:flutter/…/widgets/framework.dart:3947
E/flutter ( 8249): #39 ComponentElement._firstBuild
package:flutter/…/widgets/framework.dart:4206
E/flutter ( 8249): #40 StatefulElement._firstBuild
package:flutter/…/widgets/framework.dart:4381
E/flutter ( 8249): #41 ComponentElement.mount
package:flutter/…/widgets/framework.dart:4201
E/flutter ( 8249): #42 Element.inflateWidget
package:flutter/…/widgets/framework.dart:3194
E/flutter ( 8249): #43 Element.updateChild
package:flutter/…/widgets/framework.dart:2988
E/flutter ( 8249): #44 ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4243
E/flutter ( 8249): #45 Element.rebuild (package:flutte
这个应用工作得非常好,它不会崩溃或任何东西,只是无法正确显示我保存到数据库中的项目。
你得到这个错误是因为你把一个 int
变成 Text
小部件,接受一个 String
.
你可以通过使用该函数将int转换为 toString()
方法。
检查下面的代码。用你的 handleSubmitted
功能。
void _handleSubmitted(String text) async {
_textEditingController.clear();
Tasks tasksItem = Tasks(text, DateTime.now().toIso8601String());
int savedItemId = await db.saveItem(tasksItem);
// convert savedItemId to a string using toString() method
print("Item saved ID: $savedItemId.toString()");
}
希望对你有所帮助
已更新在查看了你的代码后,我可以看到你正在尝试访问字段 id
你没有在你的 Tasks
构造函数.为什么你会得到错误。Type String is not a subtype of int index
希望这能解决你的错误。