flutter выберите возвращение null sqlite - PullRequest
0 голосов
/ 30 апреля 2019

Я новичок в SQLite и flutter.Я пытаюсь получить доступ к базе данных SQLite (которая находится на моем компьютере в папке проекта в '~/Work/FlutterTest/ProjectTestFlutter/poa.db'.

, но у меня есть null, когда я пытаюсь cast мой List дляString.

Вот мой код:

class _DbPageState extends State<DbPage> {
  String data;
  var databasesPath;
  String path;
  Database database;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        body: Container(
      child: Row(
        children: <Widget>[
          new IconButton(
              onPressed: () {
                data = getRecords().toString();
              },
              icon: Icon(Icons.more_vert)),
          new Text(
            data,
          )
        ],
      ),
    ));
  }

  Future<void> openDb() async {
    var databasesPath = await getDatabasesPath();
    String path = join(databasesPath, '~/Work/FlutterTest/ProjectTestFlutter/poa.db');

    database = await openDatabase(path, version: 1);
  }

  Future<List<Map>> getRecords() async {
    List<Map> list = await database.rawQuery('SELECT * FROM tbl1');
    return list;
  }

  Future<void> closeDb() async {
    await database.close();
  }
}

1 Ответ

1 голос
/ 30 апреля 2019

Когда приложение запускается, например, скопируйте базу данных на ваше устройство.

ByteData data = await rootBundle.load("assets/poa.db");
List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);

var databasesPath = await getDatabasesPath();
String dbPath = join(databasesPath, "poa.db");
await File(dbPath).writeAsBytes(bytes);

Не забудьте добавить файл db в pubspec.yml, как вы это сделали бы с ресурсами изображений.После этого вы можете открыть его из виджета с помощью:

var databasesPath = await getDatabasesPath();
String dbPath = join(databasesPath, "poa.db");
var database = await openDatabase(dbPath, version: 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...