Как предварительно загрузить данные sqflite в переменные перед сборкой?

0

У меня есть данные в sqflite, я хочу, чтобы мое дерево виджетов строилось с данными, хранящимися в базе данных, однако flutter создает виджеты до того, как получит данные из базы данных.

Я пробовал: используя future builder, но в полной версии приложения (здесь не показано) у меня есть линейная анимация индикатора выполнения, которая запускает перестроение всего дерева виджетов при воспроизведении анимации. Это заставляет конструктор будущего показывать круговой индикатор выполнения «загрузка» вместо виджетов, которые уже были созданы.

Я подумал, что мне не нужен будущий строитель, так как мне нужно только получить данные из базы данных, чтобы сохранить их как переменные.

Следующий код является минимальным представлением проблемы, которую я пытаюсь решить, приведенный ниже код выдает исключение, NoSuchMethodError (NoSuchMethodError: The method '[]' was called on null.потому что база данных еще не была полностью загружена. Я хочу, чтобы данные из sqflite были доступны для построения дерева виджетов, как я могу это сделать?

import 'package:flutter/material.dart';
import 'package:phonica/sql/service.dart';

class Testing extends StatefulWidget {
  const Testing({Key? key}) : super(key: key);

  @override
  State<Testing> createState() => _TestingState();
}

class _TestingState extends State<Testing> with TickerProviderStateMixin {
  final _databaseService = DatabaseService();
  var data;

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

  loadData() async {
    var cramModel = await _databaseService.readDatabaseTable();
    data = cramModel[1];
    return data;
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.indigo[50],
      body: Container(
        child: LayoutBuilder(
          builder: (BuildContext context, BoxConstraints constraints) {
            return Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Center(
                  child: Text(
                    data["WORD_EN"], <--- EXCEPTION ERROR
                  ),
                ),
              ],
            );
          },
        ),
      ),
    );
  }
}