【问题标题】:Unhandled exception - Flutter未处理的异常 - Flutter
【发布时间】:2019-07-02 06:38:19
【问题描述】:

我是通过 youtube 上有关 notodo_app 的教程学习颤振和学习的新手。所以我遵循相同的代码并且已经尝试重写几乎所有内容,但是当我开始使用 initstate 时,setstate。

setstate相关代码

final List<NoDoItem> _itemList = <NoDoItem>[];

@override
void initState() {
 super.initState();
 _readNoDoList();
}


void _handleSubmitted(String text) async {
 _textEditingController.clear();

 NoDoItem noDoItem = NoDoItem(text, DateTime.now().toIso8601String());
 int savedItemId = await db.saveItem(noDoItem);
 NoDoItem addedItem = await db.getItem(savedItemId);
 setState(() {
  _itemList.insert(0, addedItem); 
 });
 print("Item saved id: $savedItemId");
}

_readNoDoList() async {
 List items = await db.getItems();
 items.forEach((item) {
   NoDoItem noDoItem = NoDoItem.map(item);
   print("Db items: ${noDoItem.itemName}");
 });
}

我收到此错误并且没有提交任何内容,如果我使用的是模拟器,它将自动关闭。

E/flutter (23633): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
E/flutter (23633): Stack Overflow
E/flutter (23633): #0      _Completer.completeError (dart:async/future_impl.dart:19:3)
E/flutter (23633): #1      _RootZone.runBinary (dart:async/zone.dart:1384:54)
E/flutter (23633): #2      _FutureListener.handleError (dart:async/future_impl.dart:143:20)
E/flutter (23633): #3      Future._propagateToListeners.handleError (dart:async/future_impl.dart:654:47)
E/flutter (23633): #4      Future._propagateToListeners (dart:async/future_impl.dart:675:24)
E/flutter (23633): #5      Future._completeError (dart:async/future_impl.dart:494:5)
E/flutter (23633): #6      _SyncCompleter._completeError (dart:async/future_impl.dart:55:12)
E/flutter (23633): #7      _Completer.completeError (dart:async/future_impl.dart:27:5)
E/flutter (23633): #8      _RootZone.runBinary (dart:async/zone.dart:1384:54)
E/flutter (23633): #9      _FutureListener.handleError (dart:async/future_impl.dart:143:2

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

    您所关注的示例在其 database_client.dart 文件中有错误,特别是导致递归/堆栈溢出异常。请将 第 22 行 上的代码从 return db; 更新为 return _db;,它现在应该可以工作了

    Future<Database> get db async {
        if (_db != null) {
          return _db; // return db; throws a Stack Overflow Exception / recursion
        }
        _db = await initDb();
        return _db;
      }
    

    【讨论】:

    • 这解决了问题!我实际上并没有附加 database_client.dart 但这个问题可能与所有关注本教程的人相似。谢谢你!
    猜你喜欢
    • 2023-04-03
    • 2023-03-13
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多