代码之家  ›  专栏  ›  技术社区  ›  Nabin Dhakal

未处理的异常:NoSuchMethodError:方法“call”是在null上调用的

  •  0
  • Nabin Dhakal  · 技术社区  · 5 年前

    我升级了颤振sdk flutter upgrade --force 。升级前项目运行良好,但升级后出现错误。我目前正在使用flutter的最新稳定版本。

    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);
      }
    }
    
    0 回复  |  直到 5 年前