flutter - 未处理的异常:NoSuchMethodError:在 null 上调用了方法“调用”
问题描述
我将颤振 sdk 升级了flutter upgrade --force
. 该项目在升级前运行良好,但升级后出现错误。我目前正在使用最新的稳定版本的颤振。
E/flutter (17687): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: NoSuchMethodError: The method 'call' was called on null.
E/flutter (17687): Receiver: null
E/flutter (17687): Tried calling: call()
E/flutter (17687): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
E/flutter (17687): #1 BasicLock.synchronized (package:synchronized/src/basic_lock.dart:31:24)
E/flutter (17687): #2 SembastDatabase.flush (package:sembast/src/database_impl.dart:593:27)
E/flutter (17687): #3 SembastDatabase.open (package:sembast/src/database_impl.dart:879:11)
E/flutter (17687): <asynchronous suspension>
E/flutter (17687): #4 DatabaseOpenHelper.openDatabase.<anonymous closure> (package:sembast/src/database_factory_mixin.dart:80:7)
E/flutter (17687): <asynchronous suspension>
E/flutter (17687): #5 BasicLock.synchronized (package:synchronized/src/basic_lock.dart:33:16)
E/flutter (17687): <asynchronous suspension>
E/flutter (17687): #6 DaoDatabase._openDatabase (package:kitabyatra/db/DaoDatabase.dart:43:26)
E/flutter (17687): <asynchronous suspension>
我已经实现如下:
class DaoDatabase {
DaoDatabase();
static final DaoDatabase _singleton = DaoDatabase();
static DaoDatabase get instance => _singleton;
Completer<Database> _dbOpenCompleter;
Future<Database> get database async {
if (_dbOpenCompleter == null) {
_dbOpenCompleter = Completer<Database>();
_openDatabase();
}
return _dbOpenCompleter.future;
}
Future<dynamic> _openDatabase() async {
final Directory appDocumentDir = await getApplicationDocumentsDirectory();
final String dbPath = join(appDocumentDir.path, Strings.appDbName);
final Database database = await databaseFactoryIo.openDatabase(dbPath); //--> Getting error here
_dbOpenCompleter.complete(database);
}
}
解决方案
推荐阅读
- javascript - Nodejs + Mongoose 中的异步/等待
- google-apps-script - 谷歌电子表格:如何在使用脚本引入值时对列进行排序?
- c++ - 如何在模板化函数中转换为两种不同的类型?
- android - 智能投射到“微调器!” 是不可能的。因为 'spinnertype' 是一个可变属性,此时可能已更改
- java - Java FX 3D:不尊重其 Z 坐标的对象
- c# - 使用 RSA 加密时,RSACryptoServiceProvider 在幕后做了什么?
- swift - 如何识别可能丢失精度的 Double?
- sql - Hive Distinct Query 需要更多时间
- java - 从 datasource.getConnection() 获取 OracleConnection
- cakephp - 如果是自引用的 belongsToMany 关联中的子项,则防止删除