Как добавить задержку X длительности в приложении Flutter с помощью Shimmer?

#flutter #flutter-layout #flutter-dependencies #flutter-animation

#flutter #flutter-layout #flutter-зависимости #flutter-анимация

Вопрос:

Я работаю над приложением Flutter, в котором я хочу отобразить параметр загрузки в течение 5 секунд, и через 5 секунд он отобразит «Результат не найден».

код

 Widget Loading(){
 return Center(
  child: Shimmer.fromColors(
  baseColor: Colors.blueAccent,
  highlightColor: Colors.red,
  child:Text("Loading...",style: TextStyle(
      fontWeight: FontWeight.w900,
      fontSize: 50),
    textAlign: TextAlign.center,),
  period: Duration(seconds: 2),

  ),

 );
}

/// Use of Loading() in flutter pages

 body: (Details == null||Details.isEmpty)?
      Loading()
      : new SizedBox(.............)

// In this case, if "Details" has some data it automatically displays on-screen else, continuously loading(), I want after 5 seconds it displays "No Data Found"
  

Кто-нибудь знает, как добавить таймер / длительность / задержку в приведенный выше код?, Чтобы через 5 секунд на экране отображалось сообщение «Данные не найдены».

Ответ №1:

Для этого вы можете использовать FutureBuilder. Вот пример:

Это будущая функция для FutureBuilder. В этой функции вы можете построить свою собственную логику.

 Future<bool> _future = Future<bool>.delayed(
    Duration(seconds: 5),
    () {
      //do something here
      return true;
    },
  );
  

И это FutureBuilder должен выглядеть следующим образом

 FutureBuilder<bool>(
      future: _future,
      builder: (BuildContext context, AsyncSnapshot<bool> snapshot) {
        if (snapshot.hasData) {
          return snapshot.data ? SizedBox(.............) : Text("No data found");
        } else {
          return Loading();
        }
      },
    )