Как загрузить данные начального состояния из базы данных sqlite при открытии приложения Flutter - PullRequest
0 голосов
/ 20 марта 2020

Я делаю простое приложение для блокнота, используя флаттер. Я хочу загрузить уже сохраненные данные из базы данных SQLite и инициализировать состояние при открытии приложения. Я пытался с методом initState () с помощью метода asyn c. Но асин c методы не работают в методе initState (). В некоторых местах говорят использовать Future Builder и BLoCs. Но я не совсем уверен, что это хорошо. Каков наилучший способ реализовать это во флаттере ??

Ответы [ 2 ]

0 голосов
/ 21 марта 2020

У вас есть два варианта.

Вариант 1: Делайте то, что говорит @UtakarshSharma. Пример реализации ниже.

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

void _requestSqlData(){
   _requestSqlDataAsync();  
}

void _requestSqlData() async {
    var _data = await getData();    // call API/await function to get the data
}

Вариант 2: Использование метода обратного вызова после полноэкранной загрузки. И используйте setState для обновления экрана. Вам придется использовать flutter_after_layout (https://github.com/slightfoot/flutter_after_layout). Он выполняет функцию после завершения макета. :

void initState() {
    super.initState();
    WidgetsBinding.instance
        .addPostFrameCallback((_) => myAwesomeFunction(context));
}
0 голосов
/ 21 марта 2020

Если вы знаете, как загрузить данные из sql lite, тогда определите эту функцию вне initstate () с помощью asyn c и дождитесь ее вызова в initstate (). Initstate не может быть asyn c, потому что он должен запускаться перед вашим основным приложением, чтобы мы могли использовать внешнюю функцию для него.

  1. Определить функцию с именем sqlData () Использование asyn c await
  2. Вызвать ее внутри initstate.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...