我如何定义我的函数nullable?我在Flutter上得到以下错误(InsertData是repository.dart中的函数):lib/services/categoriesservices.dart:13:30:错误:无法访问“存储库?”上的属性“InsertData”,因为它可能为null。 'Repository'来自'package:sqflite 2/repositories/repositories.dart'('lib/repositories/repositories. dart')。请尝试使用?. instead. 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());
}
}
我错过了什么?我以为我已经用(?)初始化了存储库
1条答案
按热度按时间kuuvgm7e1#
你需要用
?
操作符访问你的可空对象的成员函数,变量。仅仅声明nullable不能满足编译器的要求。在访问insertData
函数时,它可以是null。它在访问函数之前执行空值检查。
尝试下面的代码片段与
?
运算符。如果您在访问
saveCategory(Categori category)
函数时确定_repository
对象不为空。您可以使用!
运算符强制确保对象不为空(不推荐)。你可能还想看看后期修饰语
关于可空函数
返回值
所有函数都返回一个值。如果没有指定返回值,则语句返回null;被隐式地附加到函数体。
因此,如果您知道函数的返回类型,请指定它。如果函数可能返回null,请在返回类型后使用“?”。