【发布时间】:2021-11-18 18:24:37
【问题描述】:
我正在设计一个应用程序,其中有几个屏幕将有一个具有特殊样式的状态栏。但是,在 初始屏幕,这是应用程序的第一个屏幕。我正在设计它没有状态栏。但它也适用于所有其他屏幕,即使它们具有具有独特设计样式的状态栏,特别是我在下面提供代码示例的 数字屏幕。
我的意思是状态栏
启动画面。 我使用下面的代码来隐藏状态栏 SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
// ignore_for_file: prefer_const_constructors
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:online_croceries/constants/assets.dart';
import 'package:online_croceries/data/sharedpref/constants/preferences.dart';
import 'package:online_croceries/utils/routes/routes.dart';
import 'package:shared_preferences/shared_preferences.dart';
class SplashScreen extends StatefulWidget {
SplashScreen({Key? key}) : super(key: key);
@override
_SplashScreenState createState() => _SplashScreenState();
}
class _SplashScreenState extends State<SplashScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
decoration: BoxDecoration(
color: Color.fromRGBO(83, 177, 117, 1),
),
child: Center(
child: Container(
width: 350,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage(Assets.iconLogo),
),
),
),
),
),
);
}
@override
void initState() {
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
super.initState();
starTimer();
}
starTimer() {
var _duration = Duration(milliseconds: 2000);
return Timer(_duration, navigate);
}
navigate() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
if (preferences.getBool(Preferences.is_logged_in) ?? false) {
Navigator.of(context).pushReplacementNamed(Routes.welcome);
} else {
Navigator.of(context).pushReplacementNamed(Routes.welcome);
}
}
}
主界面,我用它做根路由器
child: Observer(
builder: (context) {
return
MaterialApp(
title: 'Flutter Demo',
home: SplashScreen(),
routes: Routes.routes,
locale: Locale(_languageStore.locale),
supportedLocales: _languageStore.supportedLanguages.map((e) =>
Locale(e.locale!, e.code)).toList(),
localizationsDelegates: [AppLocalizations.delegate]
// home: APIUsing(),
);
},
name: "global-observer",
),
NumberScreen,用于登录。 TransparentAppBar 是我用来创建具有特殊样式的状态栏的自定义小部件
Widget build(BuildContext context) {
int backDropBlur = 30;
return Scaffold(
appBar: TransparentAppBar(
transTitle: "",
leadingIcon: IconButton(
onPressed: () {
Navigator.of(context).pop();
},
icon: Icon(
Icons.chevron_left,
),
),
),
【问题讨论】:
标签: flutter