我正在嘗試在我的 flutter 應用程式中使用資料庫表單資產檔案夾。我試過這個代碼:
class DatabaseHelper {
static const _databaseName = "main.db";
static const _databaseVersion = 1;
DatabaseHelper._privateConstructor();
static final DatabaseHelper instance = DatabaseHelper._privateConstructor();
static Database _database;
Future<Database> get database async {
if (_database != null) return _database;
_database = await _initDatabase(); // only initialize if not created already
return _database;
}
_initDatabase() async {
String path = join(await getDatabasesPath(), _databaseName);
if (!(await databaseExists(path))) {
ByteData data = await rootBundle.load(join("assets", _databaseName));
List<int> bytes =
data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
await File(path).writeAsBytes(bytes);
}
return await openDatabase(path, version: _databaseVersion);
}
}
但是代碼在此代碼錯誤處拋出此錯誤 DatabaseHelper._privateConstructor();
:必須初始化不可為空的變數“_database”。嘗試添加初始化運算式。
并在此代碼:靜態資料庫_database;
Non-nullable instance field '_database' must be initialized.
Try adding an initializer expression, or add a field initializer in this constructor, or mark it 'late'.dartnot_initialized_non_nullable_instance_field
我是新手,我不知道這意味著什么......請幫我解決這個問題:)
uj5u.com熱心網友回復:
分析器正在抱怨,因為您_database現在擁有非空值,因為您使用的型別Database意味著保證值在那里......非空值。要使某些內容可以為空,即,您需要?在型別后面放置一個,例如Database?
static Database _database;
應該
static Database? _database;
uj5u.com熱心網友回復:
您可以嘗試后期關鍵字
late Database _database;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/315564.html
