App启动逻辑:
1、和原生开发一样,初始一个启动页面splash.dart
判断是否登录,进行页面的跳转
import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import './login.dart';
import './main.dart';
import './utils/util.dart';
void main() => runApp(AppSplashPage());
class AppSplashPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'AppSplashPage',
theme: ThemeData(
brightness: Brightness.dark,
primaryColor: const Color(0xFF0a3470),
accentColor: const Color(0xFF0a3470),
),
routes: <String, WidgetBuilder> {
'/homePage': (_) => new MainPage(),
'/loginPage': (_) => new LoginPage(),
},
home: SplashWidget(),
);
}
}
//页面加载器,作为主页面
class SplashWidget extends StatefulWidget {
//生命周期函数
@override
SplashPageState createState() => SplashPageState();
}
//启动页面处理跳转页面逻辑
class SplashPageState extends State<SplashWidget> {
@override
void initState() {
// TODO: implement initState
super.initState();
sharedGetData("companyId").then((Object data){
String companyId= data;
if(companyId.isNotEmpty){
Navigator.pushReplacementNamed(context, '/homePage');
}else{
Navigator.pushReplacementNamed(context, '/loginPage');
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
alignment: Alignment.topCenter,
//设置登录页面背景图片
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("images/beijing.jpg"),
fit: BoxFit.cover,
),),
child: Center(
child:childWidget()
),
),
);
}
}
//获取loading组件
Widget childWidget() {
Widget childWidget = new Stack(
children: <Widget>[
new Padding(
padding: new EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 35.0),
child: new Center(
child: SpinKitFadingCircle(
color: Colors.blueAccent,
size: 30.0,
),
),
),
new Padding(
padding: new EdgeInsets.fromLTRB(0.0, 35.0, 0.0, 0.0),
child: new Center(
child: new Text("兄台莫急噻~~"),
),
),
],
);
return childWidget;
}
2、登录页面登录成功后,保存登录信息,并且跳转主页面
sharedAddAndUpdate("companyId", String, userInfo['companyId']);
Navigator.pushReplacementNamed(context, '/homePage');