База данных Flutter Floor из snapshot.data в Future Builder? - PullRequest
0 голосов
/ 07 апреля 2020

Я не могу сохранить snapshot.data в базу данных через этаж во Flutter. Я написал сущность, дао и файл базы данных, построил базу данных и database.g.dart, но завершил работу успешно, но когда я попытался вставить функцию пользователя, оказалось ниже ошибка; Что мне не хватает? Есть ли что-нибудь, что можно сделать для записи будущих снимков.data, которых нет в [руководстве]? 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}';
 }
}

DAO:

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),
....

...