Database 注销时删除数据库,登录dart后重新创建

Database 注销时删除数据库,登录dart后重新创建,database,flutter,dart,sqflite,Database,Flutter,Dart,Sqflite,我正在使用SQFLite数据库和Firestore在Flatter和dart中开发一个应用程序,我希望当用户单击注销按钮时,应用程序删除SQFLite数据库并返回用户登录屏幕,登录时从Firestore获取数据用户信息登录,并删除数据库,但问题是,当我想再次登录应用程序时,它会显示此错误 需要帮助吗 [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: DatabaseException(database_closed

我正在使用SQFLite数据库和Firestore在Flatter和dart中开发一个应用程序,我希望当用户单击注销按钮时,应用程序删除SQFLite数据库并返回用户登录屏幕,登录时从Firestore获取数据用户信息登录,并删除数据库,但问题是,当我想再次登录应用程序时,它会显示此错误

需要帮助吗

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: DatabaseException(database_closed 1)
#0      wrapDatabaseException (package:sqflite/src/exception_impl.dart:12:7)
E/flutter (28706): <asynchronous suspension>
E/flutter (28706): #1      SqfliteDatabaseFactoryImpl.wrapDatabaseException 
(package:sqflite/src/factory_impl.dart:25:7)
E/flutter (28706): #2      SqfliteDatabaseMixin.safeInvokeMethod 
 (package:sqflite/src/database_mixin.dart:188:15)
  E/flutter (28706): #3      SqfliteDatabaseMixin.txnRawInsert.<anonymous closure> 
 (package:sqflite/src/database_mixin.dart:363:14)
E/flutter (28706): #4      SqfliteDatabaseMixin.txnSynchronized.<anonymous closure> 
(package:sqflite/src/database_mixin.dart:307:22)
E/flutter (28706): #5      BasicLock.synchronized (package:synchronized/src/basic_lock.dart:32:26)
E/flutter (28706): #6      SqfliteDatabaseMixin.txnSynchronized 
(package:sqflite/src/database_mixin.dart:303:43)
E/flutter (28706): #7      SqfliteDatabaseMixin.txnWriteSynchronized 
(package:sqflite/src/database_mixin.dart:325:7)
E/flutter (28706): #8      SqfliteDatabaseMixin.txnRawInsert 
(package:sqflite/src/database_mixin.dart:362:12)
E/flutter (28706): #9      SqfliteDatabaseExecutorMixin.rawInsert 
(package:sqflite/src/database_mixin.dart:49:15)
E/flutter (28706): #10     SqfliteDatabaseExecutorMixin.insert 
 (package:sqflite/src/database_mixin.dart:59:12)
E/flutter (28706): #11     SQFliteDBHelper.SAVE_USER 
(package:health_calorie_db/settings_in_app/sqflite_db_helper.dart:86:20)
E/flutter (28706): <asynchronous suspension>
E/flutter (28706): #12     userServices.saveToSQFLiteDB 
(package:health_calorie_db/dbServicesManager/userServices.dart:72:13)
E/flutter (28706): #13     userServices.logInCheck 
(package:health_calorie_db/dbServicesManager/userServices.dart:99:10)
E/flutter (28706): <asynchronous suspension>
E/flutter (28706): #14     loginState.checkValidationForms 
(package:health_calorie_db/ui_classes/log_in_up_pages/log_in_page.dart:25:22)
E/flutter (28706): #15     loginState.build.<anonymous closure>.<anonymous closure> 
(package:health_calorie_db/ui_classes/log_in_up_pages/log_in_page.dart:112:60)
E/flutter (28706): #16     _createButton.build.<anonymous closure> 
(package:health_calorie_db/ui_classes/log_in_up_pages/log_in_page.dart:165:9)
E/flutter (28706): #17     _InkResponseState._handleTap 
(package:flutter/src/material/ink_well.dart:706:14)
E/flutter (28706): #18     _InkResponseState.build.<anonymous closure> 
 (package:flutter/src/material/ink_well.dart:789:36)
E/flutter (28706): #19     GestureRecognizer.invokeCallback 
(package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (28706): #20     TapGestureRecognizer.handleTapUp 
(package:flutter/src/gestures/tap.dart:486:11)
E/flutter (28706): #21     BaseTapGestureRecognizer._checkUp 
(package:flutter/src/gestures/tap.dart:264:5)
E/flutter (28706): #22     BaseTapGestureRecognizer.acceptGesture 
 (package:flutter/src/gestures/tap.dart:236:7)
E/flutter (28706): #23     GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter (28706): #24     GestureBinding.handleEvent 
 (package:flutter/src/gestures/binding.dart:222:20)
E/flutter (28706): #25     GestureBinding.dispatchEvent 
(package:flutter/src/gestures/binding.dart:198:22)
E/flutter (28706): #26     GestureBinding._handlePointerEvent 
 (package:flutter/src/gestures/binding.dart:156:7)
 E/flutter (28706): #27     GestureBinding._flushPointerEventQueue 
 (package:flutter/src/gestures/binding.dart:102:7)
  E/flutter (28706): #28     GestureBinding._handlePointerDataPacket 
 (package:flutter/src/gestures/binding.dart:86:7)
 E/flutter (28706): #29     _rootRunUnary (dart:async/zone.dart:1138:13)
 E/flutter (28706): #30     _CustomZone.runUnary (dart:async/zone.dart:1031:19)
 E/flutter (28706): #31     _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
 E/flutter (28706): #32     _invoke1 (dart:ui/hooks.dart:273:10)
 E/flutter (28706): #33     _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5)
[错误:flatter/lib/ui/ui\u dart\u state.cc(157)]未处理的异常:DatabaseException(database\u关闭1)
#0 wrapDatabaseException(包:sqflite/src/exception\u impl.dart:12:7)
E/颤振(28706):
E/颤振(28706):#1 sqflitedDatabaseFactoryImpl.wrapDatabaseException
(包装:sqflite/src/factory_impl.dart:25:7)
E/颤振(28706):#2 sqflietedatabasemixin.safeInvokeMethod
(软件包:sqflite/src/database_mixin.dart:188:15)
E/颤振(28706):#3 sqflitedDatabaseMixin.txnRawInsert。
(软件包:sqflite/src/database_mixin.dart:363:14)
E/颤振(28706):#4 SqflitedDatabaseMixin.txn同步。
(软件包:sqflite/src/database_mixin.dart:307:22)
E/flatter(28706):#5 BasicLock.synchronized(包:synchronized/src/basic_lock.dart:32:26)
E/颤振(28706):#6 SqflitedDatabaseMixin.txn同步
(软件包:sqflite/src/database_mixin.dart:303:43)
E/颤振(28706):#7 sqflietedatabasemixin.txnWriteSynchronized
(软件包:sqflite/src/database_mixin.dart:325:7)
E/颤振(28706):#8 sqflitedDatabaseMixin.txnRawInsert
(软件包:sqflite/src/database_mixin.dart:362:12)
E/颤振(28706):#9 SqflitedDatabaseExecutorMixin.rawInsert
(软件包:sqflite/src/database_mixin.dart:49:15)
E/颤振(28706):#10 sqflitedDatabaseExecutorMixin.insert
(软件包:sqflite/src/database_mixin.dart:59:12)
E/颤振(28706):#11 SQFliteDBHelper.SAVE#u用户
(套餐:健康\卡路里\数据库/设置\在\应用程序/sqflite\数据库\助手中。dart:86:20)
E/颤振(28706):
E/flatter(28706):#12 userServices.saveToSQFLiteDB
(套餐:health_calorie_db/dbServicesManager/userServices.dart:72:13)
E/颤振(28706):#13 userServices.logInCheck
(套餐:health_calorie_db/dbServicesManager/userServices.dart:99:10)
E/颤振(28706):
E/颤振(28706):#14 loginState.checkValidationForms
(套餐:健康卡db/ui课程/登录页面/登录页面。dart:25:22)
E/颤振(28706):#15登录状态。构建。。
(套餐:健康卡db/ui课程/登录页面/登录页面。dart:112:60)
E/颤振(28706):#16"createButton.build。
(套餐:健康、卡路里、db/ui课程、登录页面、登录页面。dart:165:9)
E/颤振(28706):#17#
(包装:颤振/src/材料/墨水井。省道:706:14)
E/颤振(28706):#18#InkResponseState.build。
(包装:颤振/src/材料/墨水井。省道:789:36)
E/颤振(28706):#19手势识别器。调用回调
(软件包:颤振/src/手势/识别器。dart:182:24)
E/颤振(28706):#20 TapGestureRecognitor.HandletUp
(包装:颤振/src/signatures/tap.dart:486:11)
E/颤振(28706):#21 BaseTapgestureRecognitor.#检查
(套装:颤振/src/signatures/tap.dart:264:5)
E/颤振(28706):#22 BaseTapgestureRecognitor.Accept手势
(包装:颤振/src/signatures/tap.省道:236:7)
E/flatter(28706):#23 GestureArenaManager.sweep(包:flatter/src/signatures/arena.dart:156:27)
E/颤振(28706):#24手势绑定。手部通风
(包装:颤振/src/signatures/binding.dart:222:20)
E/颤振(28706):#25 GestureBinding.dispatchEvent
(包装:颤振/src/signatures/binding.dart:198:22)
E/颤振(28706):26手势绑定
(包装:颤振/src/signatures/binding.省道:156:7)
E/颤振(28706):#27个手势绑定。(冲洗点已关闭)
(包装:颤振/src/signatures/binding.dart:102:7)
E/颤振(28706):#28手势绑定。"手持指针数据包
(包装:颤振/src/signatures/binding.dart:86:7)
E/颤振(28706):#29 RootRun一元(dart:async/zone.dart:1138:13)
E/flatter(28706):#30 _CustomZone.runUnary(dart:async/zone.dart:1031:19)
E/颤振(28706):#31 _CustomZone.runUnaryGuarded(dart:async/zone.dart:933:7)
E/颤振(28706):#32_调用1(省道:ui/钩子。省道:273:10)
E/flatter(28706):#33 dispatchPointerDataPacket(dart:ui/hooks.dart:182:5)
这是代码

 FlatButton(
            child: Text('Yes'),
            onPressed: ()async {
              setState(() {
                dbHelper.deleteDB();
                var duration = new Duration(seconds: 8);
                return new Timer(duration, (){
                  exitApp();
                });
              });
            },

Future<bool> deleteDB() async {
  try{
 deleteDatabase(path);
 }catch( e){
 print(e.toString());
}
 print('deleting db');
}

  exitApp()async {
  Navigator.of(context).pushAndRemoveUntil(new MaterialPageRoute(builder: (context)=>login()), 
  (Route<dynamic> route) => false);
}


Future logInCheck(String name , String email, BuildContext buildContext) async
{
  userModel user ;
  final QuerySnapshot result = await userCollection.where('user_email', isEqualTo: email)
    .where('user_name' , isEqualTo: name).limit(1).getDocuments(); // searching for a particular user

  if(result.documents .length > 0){
  final List<DocumentSnapshot> ds = result.documents;
  for(int i=0; i< 1; i++ )
  {
     user = new userModel(ds[i].documentID, ds[i]['user_name'],ds[i]['user_email'],
     ds[i]['user_gender'],
     ds[i]['user_weight'],ds[i]['user_height'] ,ds[i]['cityPoint'] ,ds[i]['checkLogIn']);
     print(user.user_email + '  :  ' +user.user_id);
     saveToSQFLiteDB(user);
     print('Added');
 }
nav.HOMEnavigate(buildContext,email);
} // if

else{
  String msg = 'Couldnt find user with email \n fill with correct info' ;
  nav.showSnackBar(buildContext , msg);
}
FlatButton(
子项:文本('Yes'),
onPressed:()异步{
设置状态(){
dbHelper.deleteDB();
var持续时间=新的持续时间(秒:8);
返回新计时器(持续时间,(){
exitApp();
});
});
},
Future deleteDB()异步{
试一试{
删除数据库(路径);
}捕获(e){
打印(如toString());
}
打印(‘删除数据库’);
}
exitApp()异步{
Navigator.of(context).pushandremoveintil(newmaterialpageroute(builder:(context)=>login()),
(路由)=>false);
}
未来登录检查(字符串名称、字符串电子邮件、BuildContext BuildContext)异步
{
用户模型用户;
最终QuerySnapshot结果=等待userCollection.where('user_email',isEqualTo:email)
.where('user_name',isEqualTo:name).limit(1).getDocuments();//搜索特定用户
如果(result.documents.length>0){
最终列表ds=结果文件;
对于(int i=0;i<1;i++)
{
user=newusermodel(ds[i].documentID,ds[i]['user\u name',ds[i]['user\u email'],
ds[i][“用户性别”],
ds[i][‘用户体重’]、ds[i][‘用户身高’]、ds[i][‘城市点’]、ds[i][‘检查登录’];
打印(user.user_电子邮件+':'+user.user_id);
saveToSQFLiteDB(用户);
打印(“添加”);
}
导航(构建上下文、电子邮件);
}//如果
否则{
字符串msg='找不到有电子邮件的用户\n请填写正确的信息';
nav.showSnackBar(buildContext,msg);
}
}

void saveToSQFLiteDB(userModel用户){
userInApp u=new userInApp(user.user\u id,user.user\u name,user.us
void saveToSQFLiteDB(userModel user) {

  userInApp u = new userInApp(user.user_id, user.user_name, user.user_email, user.user_weight,
   user.user_height, user.cityPoint.latitude, user.cityPoint.longitude,user.checkLogIN);
  dbHelper.SAVE_USER(u);
  }


 Future<userInApp> SAVE_USER (userInApp user) async{
  var dbClient = await datebase;
//user.user_id =
  await dbClient.insert(userTable, user.toMap()).toString();
  print('user has been saved');
  return user;
  Future<void> deleteDB() async {
   try{
    print('deleting db');
    db=null;
    deleteDatabase(path);
    }catch( e){
    print(e.toString());
     }

print('db is deleted');
}