2025-01-21 23:56:47 +08:00

119 lines
2.4 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/material.dart';
import '../common/app_colors.dart';
import '../common/assets.dart';
class SplashPage extends StatefulWidget {
const SplashPage({Key? key}) : super(key: key);
@override
State<SplashPage> createState() => _SplashPageState();
}
class _SplashPageState extends State<SplashPage> {
//计数变量
final duration = 10;
int number = 0;
//倒计时函数
Future<void> _countdown() async {
number = duration;
for (var i = 0; i < duration; i++) {
await Future.delayed(const Duration(seconds: 1), () {
// 除非 [mounted] 为 true否则调用 [setState] 是错误的。
if (mounted == true) {
setState(() {
number--;
});
}
});
}
if (number == 0) {
print('倒计时结束 ');
}
}
@override
void initState() {
super.initState();
_countdown();
}
//logo
Widget _buildLogo() {
return Stack(
alignment: Alignment.center,
children: [
//底部白色背景
Container(
// color: Colors.white,
width: 120,
height: 120,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(48),
),
),
//上层图片
Image.asset(
AssetsImages.logoPng,
width: 84,
height: 80,
)
],
);
}
//text方法抽出
Text _bulidText(String text) {
return Text(
text,
style: const TextStyle(
fontSize: 19,
// fontFamily: 'Poppins',
fontWeight: FontWeight.bold,
color: Colors.white,
height: 22 / 19,
),
);
}
//主视图 拆成函数
Widget _buildView(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
//logo
_buildLogo(),
const SizedBox(
height: 24,
),
//标题
_bulidText('Online Market'),
const SizedBox(
height: 24,
),
//计数器
_bulidText(number > 0 ? '$number' : 'done'),
//end
],
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _buildView(context),
backgroundColor: AppColors.backgroundSplash,
);
}
}