為什么此 Dart 代碼給出“運算元不能為空,因此條件始終為真。洗掉條件”?
import 'package:sqflite/sqflite.dart';
class DatabaseHelper {
static final DatabaseHelper instance = DatabaseHelper._privateConstructor();
static late Database _database;
DatabaseHelper._privateConstructor();
Future<Database> get database async {
if (_database != null) return _database; // HERE: "The operand can't be null, so the condition is always true. Remove the condition"
_database = await _initDatabase();
return _database;
}
Future<Database> _initDatabase() async {
Database _db = await openDatabase('my_db.db');
return _db;
}
}

uj5u.com熱心網友回復:
因為檢查是否_database為空是多余的,因為您將其宣告為
static late Database _database;
Database 這是一個不可為空的型別,因此它不能為空。
為了清楚起見,這是警告而不是錯誤。
要重構您的代碼,請將_database變數宣告為可為空
static Database? _database;
和你的database吸氣劑
Future<Database> get database async {
final Database? instance = _database;
if (instance != null) return instance;
instance = await _initDatabase();
_database = instance;
return instance;
}
uj5u.com熱心網友回復:
這是因為當您定義 時_database,您專門將其定義為不可空的:
static late Database _database;
如果它是一個可為空的,您將添加“?”
static late Database? _database;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/335394.html
上一篇:使用泛型和隱式轉換多載決議
