Как показать виджет за 4 секунды, используя таймер во флаттере - PullRequest
0 голосов
/ 24 апреля 2020

Я создал пользовательский интерфейс для экрана spla sh в виджете BuildWaitingScreen. Я хочу отображать экран Spla sh в виджете buildWaitingScreen в течение 4 секунд. Я хочу знать, как дать время ожидания для этого виджета? Можно использовать таймер для этой или будущей задержки, чтобы получить задержку в 4 секунды?

код: `

Widget buildWaitingScreen() {
      return Scaffold(
          body: Stack(
            fit: StackFit.expand,
            children: <Widget>[
              Container(
                decoration: BoxDecoration(color: Colors.blueAccent),
              ),
              Column(
                mainAxisAlignment: MainAxisAlignment.start,
                children: <Widget>[
                  Expanded(
                    flex: 2,
                    child: Container(
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: <Widget>[
                          CircleAvatar(
                            backgroundColor: Colors.white,
                            radius: 50.0,
                            child: Icon(
                              Icons.directions_car,
                              color: Colors.blue,
                              size: 50.0,
                            ),
                          ),
                          Padding(padding: EdgeInsets.only(top: 10.0),
                          ),
                          Text(
                            "CarWash Locator v.1",
                            style: TextStyle(color: Colors.white,
                                fontSize: 24.0,
                                fontWeight: FontWeight.bold),
                          )
                        ],
                      ),
                    ),
                  ),
                  Expanded(
                    flex: 1,
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: <Widget>[
                        CircularProgressIndicator(),
                        Padding(
                          padding: EdgeInsets.only(top: 20.0),
                        ),
                        Text(
                          "one click! locate car wash!!",
                          style: TextStyle(color: Colors.white,
                              fontSize: 18.0,
                              fontWeight: FontWeight.bold
                          ),
                        )
                      ],
                    ),
                  )
                ],
              )
            ],
          )
      );
  }

  @override
  Widget build(BuildContext context) {
    switch (authStatus) {
      case AuthStatus.NOT_DETERMINED:
        return buildWaitingScreen();
        break;
      case AuthStatus.NOT_LOGGED_IN:
        return new LandingPage(auth: widget.auth,);
        break;
      case AuthStatus.LOGGED_IN:
        if (_userId.length > 0 && _userId != null) {
          return new HomePage(auth: widget.auth,);
        } else
          return  buildWaitingScreen();
        break;
      default:
        return buildWaitingScreen();
    }
  }
}

`

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Используйте это.

Future.delayed(Duration(seconds: 4)).then((value) => {
    // hide your widget
  });
0 голосов
/ 24 апреля 2020

Или вы можете попробовать это, чтобы решить проблему, у меня хорошо работает ..

class SplashScreen extends StatefulWidget {


  @override
  _SplashScreenState createState() => _SplashScreenState();
}

class _SplashScreenState extends State<SplashScreen> {

void route(){
  Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => Route to your widgets));
}

initiateRoute(){
  var duration = Duration(seconds: 3);
  return Timer(duration, route);
}

  @override
  void initState() {
    initiateRoute();
    super.initState();
  }
  @override
  Widget build(context) {
    return Scaffold(
      body: Container(
        child: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
            ],
          ),
        ),
      ),
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...