[英]Flutter Floor Database from snapshot.data in Future Builder?
我無法通過 Flutter 中的樓層將 snapshot.data 存儲到數據庫。 我編寫了實體、dao 和數據庫文件,構建了數據庫和數據庫。g.dart 成功完成,但是當我嘗試 insertUser function 時,它變成了以下錯誤; 我錯過了什么? 有什么可做的記錄未來的快照。數據在[指南]中沒有? 1
錯誤:
════════ Exception caught by gesture ═══════════════════════════════════════════════════════════════
The following NoSuchMethodError was thrown while handling a gesture:
The method 'insertUser' was called on null.
Receiver: null
Tried calling: insertUser(Instance of 'UserF')
我的實體:
import 'package:floor/floor.dart';
@entity
class UserF {
@PrimaryKey(autoGenerate: true)
final int id;
final String user;
final int overview;
UserF({this.id,
this.user,
this.overview,
@override
int get hashCode => id.hashCode ^ user.hashCode ^ overview.hashCode ;
@override
String toString() {
return 'UserF{id: $id, user: $user, overview: $overview}';
}
}
道:
import 'package:floor/floor.dart';
import 'entity.dart';
@dao
abstract class UserDao {
@Query('SELECT * FROM UserF')
Future<List<UserF>> findAllUsers();
@Query('SELECT * FROM UserF WHERE id = :id')
Stream<UserF> findUserById(int id);
@insert
Future<void> insertUser(UserF userF);
@delete
Future<int> deleteUser(UserF userF);
}
數據庫:
import 'dart:async';
import 'package:floor/floor.dart';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart' as sqflite;
import 'user_dao.dart';
import 'entity.dart';
part 'database.g.dart'; // the generated code will be there
@Database(version: 1, entities: [UserF])
abstract class AppDatabase extends FloorDatabase {
UserDao get userDao;
}
我的main.dart上的相關零件
Future<void> main() async{
WidgetsFlutterBinding.ensureInitialized();
final AppDatabase = await $FloorAppDatabase
.databaseBuilder('database.db')
.build();
runApp(MyApp());
}
....
floatingActionButton: FloatingActionButton(
onPressed: (){
final userf = UserF(user: snapshot.data.user, overview: snapshot.data.overview);
favoriteDao.insertUser(userf);
},
child: Icon(Icons.add),
....
如果代碼:
part 'database.g.dart';
正在創建錯誤,這意味着您必須生成該文件。
如果您還沒有添加這些依賴項:
依賴項:
floor: ^0.14.0
sqflite: ^1.3.0
開發依賴:
floor_generator: ^0.14.0
build_runner: ^1.8.1
在終端中運行以下命令:
flutter packages pub run build_runner build
並等待一段時間。 Flutter 將生成命令。 Flutter 會自動生成文件。
記住:數據庫文件的名稱和生成的文件的名稱必須相同,除了 ADDING.g
例如
如果數據庫文件名為mydatabase.dart生成的文件名必須是mydatabase.g.dart
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.