如何定義我的函式可為空?我在 Flutter 上收到以下錯誤(InsertData 是 repository.dart 中的函式):
`lib/services/categoriesservices.dart:13:30:錯誤:無法在“存盤庫”上訪問屬性“InsertData”?因為它可能為空。
“存盤庫”來自“package:sqflite2/repositories/repository.dart”(“lib/repositories/repository.dart”)。嘗試使用 ? 訪問。反而。return await _repository.InsertData.call(`
repository.dart見下圖:
import 'package:sqflite/sqflite.dart';
import 'package:sqflite2/repositories/databaseconnection.dart';
class Repository {
DataBaseConnection? _dataBaseConnection;
Repository() {
//initialize database connection
_dataBaseConnection = DataBaseConnection();
}
static Database? _database;
Future<Database?> get database async {
if (_database != null) {
return _database;
}
_database = await _dataBaseConnection.setDatabase();
return database;
}
//create function inserting data to database
InsertData(table, data) async {
var connection = await database;
return await connection.insert(table, data);
}
}
函式初始化如下:
import 'package:sqflite2/models/category.dart';
import 'package:sqflite2/repositories/repository.dart';
class CategoryService {
Repository? _repository;
CategoryService() {
_repository = Repository();
}
saveCategory(Categori category) async {
return await _repository.InsertData("categories", category.categoryMap());
}
}
我錯過了什么?我以為我已經用 (?)
uj5u.com熱心網友回復:
您需要使用?
運算子訪問可空物件的成員函式和變數。僅僅宣告可空不會讓編譯器滿意。訪問insertData函式時可以為空。
它在訪問函式之前執行空檢查。
使用?運算子嘗試以下代碼段。
saveCategory(Categori category) async {
return await _repository?.InsertData("categories", category.categoryMap());
}
如果您確定該_repository物件在訪問該saveCategory(Categori category)函式時不為空。您可以使用!運算子來強制保證物件不為空(不推薦)。
return await _repository!.InsertData("categories", category.categoryMap());
您可能還想查看后期修改器
關于可空函式
回傳值
所有函式都回傳一個值。如果沒有指定回傳值,則陳述句回傳null;隱式附加到函式體。
因此,如果您知道函式的回傳型別,請指定它。如果函式可能回傳 null,請使用 '?' 在回傳型別之后。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/330705.html
