Database db未在sqflite中初始化-颤振

Database db未在sqflite中初始化-颤振,database,flutter,dart,mobile-development,sqflite,Database,Flutter,Dart,Mobile Development,Sqflite,我第一次在Flatter中使用sqflite数据库,但我不确定哪里出了问题。我调用了db初始化器,但是在它发生后我没有得到输出(成功消息)。非常感谢您的帮助。以下是我编写的代码: 数据库\u提供程序。dart import 'package:path_provider/path_provider.dart'; import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqlite_api.dart'; import 'dart:

我第一次在Flatter中使用sqflite数据库,但我不确定哪里出了问题。我调用了db初始化器,但是在它发生后我没有得到输出(成功消息)。非常感谢您的帮助。以下是我编写的代码:

数据库\u提供程序。dart

import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';
import 'package:sqflite/sqlite_api.dart';
import 'dart:io';
import 'package:path/path.dart';

final String tableName = 'notification';
final String columnKey = 'ColumnKey';
final String columnNumber = 'ColumnNumber';

class NotifInfo{
  int number;
  String key;

  NotifInfo(
  {
    this.number,
    this.key,
}
      );

  factory NotifInfo.fromMap(Map<String, dynamic> json) => NotifInfo(
    number: json["number"],
    key: json["key"]
  );

  Map<String, dynamic> toMap() =>{
    "number": number,
    "key": key,
  };
}

class NotifHelper{
    static Database _database;
    static NotifHelper _notifHelper;

    NotifHelper._createInstance();
    factory NotifHelper(){
      if (_notifHelper == null){
        _notifHelper = NotifHelper._createInstance();
      }
      return _notifHelper;
    }

    Future<Database> get database async{
      if (_database == null){
        _database = await initialiseDatabase();
      }
      return _database;
    }

    static NotifHelper _notifhelper;



    Future<Database> initialiseDatabase() async{
      var dir = await getDatabasesPath();
      var path = dir + "noti.db";
      
      var database = await openDatabase(path, version: 1, onCreate: (db, version){
        db.execute('''
        CREATE TABLE $tableName ($columnKey STRING, $columnNumber INT)
        ''');

        db.execute('''INSERT INTO $tableName ($columnKey, $columnNumber) VALUES ("PrimaryKey", 1)''');
      });
      return database;
      
    }


    void insertNotif(NotifInfo notifInfo) async{
      var db = await this.database;
      var result = db.insert(tableName, notifInfo.toMap());
      print('result is: $result');
    }


}
import 'dart:io';
import 'dart:ui';
import 'package:connectivity/connectivity.dart';
import 'package:data_connection_checker/data_connection_checker.dart';
import 'package:flutter/widgets.dart';
import 'package:http/http.dart' as http;
import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:convert';
import 'dart:async';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:pravproj/db/database_provider.dart';
import 'package:share/share.dart';
import 'articles_class/articles.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';



//var value = gethttps();

class PravUI extends StatefulWidget {
  @override
  _PravUIState createState() => _PravUIState();
}

class _PravUIState extends State<PravUI> {
  var data;
  bool connectivity = true;
  StreamSubscription<DataConnectionStatus> listener;

  Timer timer;
  int counter = 0;

  NotifHelper _notifhelper = NotifHelper();

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _notifhelper.initialiseDatabase().then((value){
      print("------------Database Initialised----------------");
    });
    data = getData();
    timer = Timer.periodic(Duration(seconds: 15), (Timer t) => addValue(connectivity));



  }
import'package:path_provider/path_provider.dart';
导入“包:sqflite/sqflite.dart”;
导入“包:sqflite/sqlite_api.dart”;
导入“dart:io”;
导入“package:path/path.dart”;
最终字符串tableName='notification';
最终字符串columnKey='columnKey';
最终字符串columnNumber='columnNumber';
类别通报{
整数;
字符串键;
通报(
{
这个号码,
这个钥匙,
}
);
factory NotifiInfo.fromMap(Map json)=>NotifiInfo(
编号:json[“编号”],
key:json[“key”]
);
映射toMap()=>{
“数字”:数字,
“关键”:关键,
};
}
类NotifHelper{
静态数据库;
静态NotifHelper\u NotifHelper;
NotifHelper._createInstance();
工厂通知助手(){
if(_notifHelper==null){
_notifHelper=notifHelper.\u createInstance();
}
返回\u notifHelper;
}
未来获取数据库异步{
如果(_database==null){
_database=等待initialiseDatabase();
}
返回数据库;
}
静态NotifHelper\u NotifHelper;
Future initialiseDatabase()异步{
var dir=await getDatabasesPath();
var path=dir+“noti.db”;
var数据库=等待openDatabase(路径,版本:1,onCreate:(db,版本){
db.execute(“”)
创建表$tableName($columnKey字符串,$columnNumber INT)
''');
执行(''插入$tableName($columnKey,$columnNumber)值(“PrimaryKey”,1)'');
});
返回数据库;
}
void insertNotif(NotifInfo NotifInfo)异步{
var db=wait this.database;
var result=db.insert(tableName,notifInfo.toMap());
打印('result is:$result');
}
}
本垒打。飞镖

import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';
import 'package:sqflite/sqlite_api.dart';
import 'dart:io';
import 'package:path/path.dart';

final String tableName = 'notification';
final String columnKey = 'ColumnKey';
final String columnNumber = 'ColumnNumber';

class NotifInfo{
  int number;
  String key;

  NotifInfo(
  {
    this.number,
    this.key,
}
      );

  factory NotifInfo.fromMap(Map<String, dynamic> json) => NotifInfo(
    number: json["number"],
    key: json["key"]
  );

  Map<String, dynamic> toMap() =>{
    "number": number,
    "key": key,
  };
}

class NotifHelper{
    static Database _database;
    static NotifHelper _notifHelper;

    NotifHelper._createInstance();
    factory NotifHelper(){
      if (_notifHelper == null){
        _notifHelper = NotifHelper._createInstance();
      }
      return _notifHelper;
    }

    Future<Database> get database async{
      if (_database == null){
        _database = await initialiseDatabase();
      }
      return _database;
    }

    static NotifHelper _notifhelper;



    Future<Database> initialiseDatabase() async{
      var dir = await getDatabasesPath();
      var path = dir + "noti.db";
      
      var database = await openDatabase(path, version: 1, onCreate: (db, version){
        db.execute('''
        CREATE TABLE $tableName ($columnKey STRING, $columnNumber INT)
        ''');

        db.execute('''INSERT INTO $tableName ($columnKey, $columnNumber) VALUES ("PrimaryKey", 1)''');
      });
      return database;
      
    }


    void insertNotif(NotifInfo notifInfo) async{
      var db = await this.database;
      var result = db.insert(tableName, notifInfo.toMap());
      print('result is: $result');
    }


}
import 'dart:io';
import 'dart:ui';
import 'package:connectivity/connectivity.dart';
import 'package:data_connection_checker/data_connection_checker.dart';
import 'package:flutter/widgets.dart';
import 'package:http/http.dart' as http;
import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:convert';
import 'dart:async';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:pravproj/db/database_provider.dart';
import 'package:share/share.dart';
import 'articles_class/articles.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';



//var value = gethttps();

class PravUI extends StatefulWidget {
  @override
  _PravUIState createState() => _PravUIState();
}

class _PravUIState extends State<PravUI> {
  var data;
  bool connectivity = true;
  StreamSubscription<DataConnectionStatus> listener;

  Timer timer;
  int counter = 0;

  NotifHelper _notifhelper = NotifHelper();

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _notifhelper.initialiseDatabase().then((value){
      print("------------Database Initialised----------------");
    });
    data = getData();
    timer = Timer.periodic(Duration(seconds: 15), (Timer t) => addValue(connectivity));



  }
导入'dart:io';
导入“dart:ui”;
导入“package:connectivity/connectivity.dart”;
导入“package:data_connection_checker/data_connection_checker.dart”;
导入“package:flatter/widgets.dart”;
将“package:http/http.dart”导入为http;
进口“包装:dio/dio.dart”;
进口“包装:颤振/cupertino.dart”;
进口“包装:颤振/材料.省道”;
导入“包:flifter/services.dart”;
导入“dart:convert”;
导入“dart:async”;
导入“package:firebase_messaging/firebase_messaging.dart”;
导入“包:pravproj/db/database_provider.dart”;
导入“package:share/share.dart”;
导入“articles_class/articles.dart”;
导入“package:url_launcher/url_launcher.dart”;
导入“package:webview_flatter/webview_flatter.dart”;
导入“package:flatter_local_notifications/flatter_local_notifications.dart”;
//var value=gethttps();
类PravUI扩展StatefulWidget{
@凌驾
_PravUIState createState()=>PravUIState();
}
类(PravUIState扩展状态){
var数据;
布尔连通性=真;
流订阅侦听器;
定时器;
int计数器=0;
NotifHelper _NotifHelper=NotifHelper();
@凌驾
void initState(){
//TODO:实现initState
super.initState();
_notifhelper.initialiseDatabase().then((值){
打印(“--------------数据库初始化--------------------”;
});
data=getData();
定时器=定时器。周期性(持续时间(秒数:15),(定时器t)=>addValue(连接性));
}

尝试在初始化数据库中添加一个try…catch,如果then(…)函数未被调用,则应引发异常。要在初始化数据库中添加一个try…catch,如果then(…)函数未被调用,则应引发异常