使全屏应用颤振

Bob*_*ola 22 android dart flutter

如何全屏制作颤振应用程序.我已经找到了如何隐藏状态栏隐藏Android状态栏在Flutter应用程序上.但我似乎无法找到如何隐藏Android导航栏.

Cop*_*oad 64

使用setEnabledSystemUIMode(推荐):

恢复:状态栏和导航栏出现后,将再次隐藏。


Rém*_*let 40

这与Android状态栏完全相同.这样做SystemChrome.setEnabledSystemUIOverlays([])皮两种状态栏和导航栏.

  • 这行不通!当文本字段获得焦点时,在用户向文本字段中输入内容并失去焦点之后,虚拟键盘将与手机状态栏一起显示,状态栏仍然存在,这意味着该应用程序现在未满屏幕。在文档中说,文本字段失去焦点之后,我们只能在第二秒后再次调用SystemChrome.setEnabledSystemUIOverlays,但是我的应用程序中有数十个文本字段,如何使我的应用程序始终处于全屏模式? (3认同)
  • 对于一个不认识的人,您必须导入'Service.dart'`import'package:package:flutter / services.dart'; ` (3认同)
  • 为了澄清起见:必须在类的build方法内但在“返回”之前添加“ SystemChrome.setEnabledSystemUIOverlays([]);”。 (2认同)

Jaw*_*wad 12

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

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

// to hide both:
SystemChrome.setEnabledSystemUIOverlays ([]);
Run Code Online (Sandbox Code Playgroud)

  • @JideGuru - 是的,这是正确的......代码中有一个小错误。我在提交的编辑中建议了正确的代码。希望更正能得到同行评审员的批准。 (2认同)

Sol*_*f93 11

最后,我找到了一种方法来设置一个全屏类。并禁用其他课程。

要设置全屏,请将此代码放入initState()

SystemChrome.setEnabledSystemUIOverlays([]);

并恢复正常。在处置()

SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);

在同一个班。

@override
  void dispose() {
        SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
    super.dispose();
  }
    
  @override
  initState() {
      SystemChrome.setEnabledSystemUIOverlays([]);
    super.initState();
  }
Run Code Online (Sandbox Code Playgroud)

你不能设置

SystemChrome.restoreSystemUIOverlays();
Run Code Online (Sandbox Code Playgroud)

dispose() 中。因为它已经在说

**Restores the system overlays to the last settings provided via [setEnabledSystemUIOverlays].**
May be used when the platform force enables/disables UI elements.
          
For example, when the Android keyboard disables hidden status and navigation bars,
this can be called to re-disable the bars when the keyboard is closed.
          
On Android, the system UI cannot be changed until 1 second after the previous
change. This is to prevent malware from permanently hiding navigation buttons.`
Run Code Online (Sandbox Code Playgroud)


Fai*_*med 9

下面的代码非常适合全屏

SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
Run Code Online (Sandbox Code Playgroud)
import 'package:flutter/services.dart'; 
////

@override
Widget build(BuildContext context) {
///Set color status bar
 SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
   return Scaffold(
   backgroundColor: Colors.white,
   body: Center(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Image.asset(
          'images/ic_splash_logo.png',
          width: 97.0,
          height: 115.0,
          fit: BoxFit.contain,
        ),
        SizedBox(
          height: 10.0,
        ),
        Text(
          'iComplain',
          style: TextStyle(fontSize: 24,
              color: Color(0xFF174D73),
            fontFamily: 'Helvetica'
          ),
        ),
      ],
     ),
    ),
  );
}
Run Code Online (Sandbox Code Playgroud)


小智 6

SystemChrome.setEnabledSystemUIOverlays([]);

这会隐藏顶部和底部栏,但应用程序大小保持不变。它不会扩展到全屏高度。

  • 你好,当顶部栏隐藏时,有人找到任何方法使用全高吗? (2认同)

Qui*_*ner 6

更新

在无状态或有状态小部件的 flutter 应用程序中启用全屏

SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);
Run Code Online (Sandbox Code Playgroud)

退出全屏模式

SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: SystemUiOverlay.values);
Run Code Online (Sandbox Code Playgroud)

例子

@override
  void initState() {
    // Start full screen
    SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);
    super.initState();
  }

  @override
  void dispose() {
    super.dispose();
    // Exit full screen
    SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: SystemUiOverlay.values);
  }
Run Code Online (Sandbox Code Playgroud)