Skip to content

Commit c81e487

Browse files
committed
新增闪屏页面,解决屏幕适配出来的BuG
1 parent f303852 commit c81e487

File tree

16 files changed

+160
-49
lines changed

16 files changed

+160
-49
lines changed

assets/images/image_splash.jpg

408 KB
Loading

lib/containers/Login.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,5 +178,3 @@ class _LoginState extends State<Login> {
178178
);
179179
}
180180
}
181-
182-
class Futrue {}

lib/containers/SplashPage.dart

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import 'dart:async';
2+
import 'package:flutter/material.dart';
3+
import 'package:flutter_book/containers/Entrance.dart';
4+
import 'package:flutter_book/helpers/Adapt.dart';
5+
6+
class SplashPage extends StatefulWidget {
7+
@override
8+
State<StatefulWidget> createState() {
9+
return _SplashPageState();
10+
}
11+
}
12+
13+
class _SplashPageState extends State<SplashPage> {
14+
num _time = 6;
15+
Timer _timer;
16+
17+
@override
18+
Widget build(BuildContext context) {
19+
Adapt.instance = Adapt.getInstance()..init(context);
20+
return Scaffold(
21+
body: Stack(
22+
children: <Widget>[
23+
Image.asset(
24+
"assets/images/image_splash.jpg",
25+
fit: BoxFit.cover,
26+
width: double.infinity,
27+
height: MediaQuery.of(context).size.height,
28+
),
29+
Positioned(
30+
top: Adapt.getInstance().setPx(15.0) +
31+
Adapt.getInstance().getPadTopH,
32+
right: Adapt.getInstance().setPx(15.0),
33+
child: GestureDetector(
34+
onTap: _goToHome,
35+
child: Container(
36+
padding: EdgeInsets.symmetric(
37+
horizontal: Adapt.getInstance().setPx(8.0),
38+
vertical: Adapt.getInstance().setPx(4.0)),
39+
decoration: BoxDecoration(
40+
borderRadius: BorderRadius.circular(20.0),
41+
color: Color.fromRGBO(0, 0, 0, 0.8)),
42+
child: Text(
43+
"${_time}s 跳过",
44+
style: TextStyle(
45+
color: Colors.white,
46+
fontSize: Adapt.getInstance().setPx(14.0),
47+
),
48+
),
49+
),
50+
),
51+
)
52+
],
53+
),
54+
);
55+
}
56+
57+
@override
58+
void initState() {
59+
super.initState();
60+
_timer = Timer.periodic(Duration(seconds: 1), (_) {
61+
setState(() {
62+
_time = _time - 1;
63+
});
64+
// 倒计时
65+
if (_time == 1) {
66+
_goToHome();
67+
}
68+
});
69+
// _countDown();
70+
}
71+
72+
// 跳到首页
73+
void _goToHome() {
74+
_timer.cancel();
75+
Navigator.of(context).pushAndRemoveUntil(
76+
MaterialPageRoute(builder: (context) => Entrance()),
77+
(route) => route == null);
78+
}
79+
}

lib/helpers/Adapt.dart

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
22
import 'dart:ui';
33

44
class Adapt {
5+
static Adapt instance = Adapt();
56
static MediaQueryData mediaQuery = MediaQueryData.fromWindow(window);
67
static double _width = mediaQuery.size.width;
78
static double _height = mediaQuery.size.height;
@@ -19,11 +20,19 @@ class Adapt {
1920
/// @param [allowFontScaling] 是否跟随系统进行字体缩放
2021
/// @param [uiwidth] 设计图的宽度px
2122
/// @param [uiheight] 设计图的高度px
22-
Adapt.init(
23-
{allowFontScaling = false, @required uiwidth, @required uiheight}) {
24-
_allowFontScaling = allowFontScaling;
25-
_uiwidth = uiwidth;
26-
_uiheight = uiheight;
23+
24+
void init(BuildContext context) {
25+
mediaQuery = MediaQuery.of(context);
26+
_width = mediaQuery.size.width;
27+
_height = mediaQuery.size.height;
28+
_topbarH = mediaQuery.padding.top;
29+
_botbarH = mediaQuery.padding.bottom;
30+
_pixelRatio = mediaQuery.devicePixelRatio;
31+
_textScaleFactor = mediaQuery.textScaleFactor;
32+
}
33+
34+
static Adapt getInstance() {
35+
return instance;
2736
}
2837

2938
// 设置字体大小px
@@ -55,6 +64,14 @@ class Adapt {
5564
return _topbarH;
5665
}
5766

67+
double setPx(number) {
68+
return _allowFontScaling
69+
? (number * scaleWidth) / _textScaleFactor
70+
: number * scaleWidth;
71+
}
72+
73+
double get getPadTopH => _topbarH;
74+
5875
// 底部安全区距离
5976
static padBotH() {
6077
return _botbarH;

lib/main.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter/cupertino.dart';
3-
import 'package:flutter_book/containers/Login.dart';
4-
import 'package:flutter_book/containers/Entrance.dart';
3+
import 'package:flutter_book/containers/SplashPage.dart';
54
import 'package:flutter_book/helpers/constants.dart' show AppColors;
65
import 'package:flutter/services.dart';
76
import 'package:fluro/fluro.dart';
@@ -60,7 +59,7 @@ class MyApp extends StatelessWidget {
6059
primaryColor: Color(AppColors.themeColor),
6160
accentColor: Color(AppColors.themeColor),
6261
scaffoldBackgroundColor: Color(AppColors.themeColor)),
63-
home: Login(),
62+
home: SplashPage(),
6463
onGenerateRoute: Application.router.generator,
6564
);
6665
}

lib/models/common.g.dart

Lines changed: 29 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/models/login.g.dart

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/models/register.g.dart

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/routers/route_handlers.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:flutter_book/containers/Search.dart';
88
import 'package:flutter_book/containers/Leaderboard.dart';
99
import 'package:flutter_book/containers/Category.dart';
1010
import 'package:flutter_book/containers/AboutUs.dart';
11+
import 'package:flutter_book/containers/SplashPage.dart';
1112

1213
// import 'package:flutter/painting.dart';
1314
import 'package:fluro/fluro.dart';
@@ -74,6 +75,12 @@ Handler aboutUsRouterHandler = Handler(
7475
return AboutUs();
7576
});
7677

78+
// 闪屏
79+
Handler splashRouterHandler = Handler(
80+
handlerFunc: (BuildContext context, Map<String, List<String>> params) {
81+
return SplashPage();
82+
});
83+
7784
// var demoFunctionHandler = Handler(
7885
// type: HandlerType.function,
7986
// handlerFunc: (BuildContext context, Map<String, List<String>> params) {

lib/routers/routers.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ class Routes {
2323
static String category = "/category";
2424
// 关于我们
2525
static String aboutUs = "/aboutUs";
26+
// 闪屏页面
27+
static String splash = "/splash";
2628

2729
static void configureRoutes(Router router) {
2830
router.notFoundHandler = Handler(
@@ -39,6 +41,7 @@ class Routes {
3941
router.define(leaderboard, handler: leaderboardRouterHandler);
4042
router.define(category, handler: categoryRouterHandler);
4143
router.define(aboutUs, handler: aboutUsRouterHandler);
44+
router.define(splash, handler: splashRouterHandler);
4245
// router.define(demoSimpleFixedTrans,
4346
// handler: demoRouteHandler, transitionType: TransitionType.inFromLeft);
4447
}

0 commit comments

Comments
 (0)