Я пытаюсь сделать экран spla sh для своего приложения Flutter. Я хочу, чтобы мой lo go вращался, проверяя, вошел ли пользователь в систему аутентификации firebase, а затем переходил к соответствующим представлениям в зависимости от возвращаемого значения.
Проблема в том, что мое приложение раньше не работало должным образом мой асин c вызов (я вижу свой backGround, но не AnimatedBuilder).
Я попытался запустить мой CheckUser()
с помощью пакета after_layout или с помощью этой функции:
WidgetsBinding.instance.addPostFrameCallback((_) => yourFunction(context));
, но всегда ждет, пока функция CheckUser()
завершит работу sh, поэтому я не вижу анимацию, поскольку она переходит непосредственно к другим моим представлениям.
Вот мой код, если вы хотите проверить это:
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:skull_mobile/connexion/login.dart';
import 'accueil.dart';
class SplashPage extends StatefulWidget {
SplashPage({Key key}) : super(key: key);
@override
_SplashPage createState() => _SplashPage();
}
class _SplashPage extends State<SplashPage>
with SingleTickerProviderStateMixin {
AnimationController animationController;
@override
void initState() {
super.initState();
animationController = new AnimationController(
vsync: this,
duration: new Duration(seconds: 5),
);
animationController.repeat();
checkUser();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.grey[800],
body: Center(
child: Container(
child: new AnimatedBuilder(
animation: animationController,
child: new Container(
height: 150.0,
width: 150.0,
child: new Image.asset('assets/skull.png'),
),
builder: (BuildContext context, Widget _widget) {
return new Transform.rotate(
angle: animationController.value * 6.3,
child: _widget,
);
},
),
),
),
);
}
void checkUser() async {
FirebaseAuth.instance.currentUser().then((currentUser) => {
if (currentUser == null)
{Navigator.pushNamed(context, LoginPage.routeName)}
else
{Navigator.pushNamed(context, AccueilPage.routeName)}
});
}
}