android - 如果添加了启动画面,则状态栏不会在Flutter中的其他画面上显示

标签 android ios flutter dart

Flutter中添加了SplashScreen之后,状态栏未显示在主 Activity 中。

如果我打开style.xml

<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
        <!-- Show a splash screen on the activity. Automatically removed when
             Flutter draws its first frame -->
        <item name="android:windowBackground">@drawable/launch_background</item>
        <item name="android:windowFullscreen">true</item>
</style>

因此出现问题=>
<item name="android:windowFullscreen">true</item>

如何只为SplashScreen设置全屏并为所有其他屏幕显示状态栏?

flutter 打代码
import 'package:flutter/material.dart';
import 'package:sixbrix/screens/login.dart';
import 'package:flutter/services.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
    return MaterialApp(
      debugShowCheckedModeBanner: true,
      title: 'Flutter',
      theme: ThemeData(
        primarySwatch: createMaterialColor(Color(0xFFD96332)),
      ),
      home: MyHomePage(title: 'Flutter App'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
    return Scaffold(
      body: Text("Hello"),
    );
  }
}

MaterialColor createMaterialColor(Color color) {
  List strengths = <double>[.05];
  Map swatch = <int, Color>{};
  final int r = color.red, g = color.green, b = color.blue;

  for (int i = 1; i < 10; i++) {
    strengths.add(0.1 * i);
  }
  strengths.forEach((strength) {
    final double ds = 0.5 - strength;
    swatch[(strength * 1000).round()] = Color.fromRGBO(
      r + ((ds < 0 ? r : (255 - r)) * ds).round(),
      g + ((ds < 0 ? g : (255 - g)) * ds).round(),
      b + ((ds < 0 ? b : (255 - b)) * ds).round(),
      1,
    );
  });
  return MaterialColor(color.value, swatch);
}

最佳答案

试试我下面的代码

import 'package:flutter/services.dart'; 

@override
Widget build(BuildContext context) {

 SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values); //add this line 
   return Scaffold(
   backgroundColor: Colors.white,
   body: Center(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Image.asset(
          'images/splash_logo.png',
          width: 50.0,
          height: 100.0,
          fit: BoxFit.contain,
        ),
        SizedBox(
          height: 10.0,
        ),
        Text(
          "Any",
          ),
        ),
      ],
     ),
    ),
  );
}

这个更多的信息:
// to hide only bottom bar:
SystemChrome.setEnabledSystemUIOverlays ([SystemUiOverlay.top]);

// to hide only status bar: 
SystemChrome.setEnabledSystemUIOverlays ([SystemUiOverlay.bottom]);

// to hide both:
SystemChrome.setEnabledSystemUIOverlays ([]);

关于android - 如果添加了启动画面,则状态栏不会在Flutter中的其他画面上显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60734736/

相关文章:

android - 基于 Android 示例的 Flutter 应用程序在 BOOT_COMPLETED 上自动启动不起作用

30 秒后未发现 iOS 天文台。在 iPhone 上启动应用程序时出错

android - 同时流畅地一个接一个地播放视频 [没有明显的从一个视频切换到另一个视频]

java - 有没有办法检查一个变量是否在 Java 中定义?

java - 为什么android Bitmap类不使用new关键字?

android - 为什么调用 onDestroy() 方法?

javascript - UIWebView 未正确加载 JavaScript - 嵌入式 Facebook 帖子

ios - 在 Swift 中重用 UIButton 的属性的最佳方法是什么

ios - 如何计算当前日期并将其显示给每个 UITableViewCell

android - Flutter 如何将自己的 DartVM 用于原生应用