I need to hide the Android Status bar in my app so i am using the following code

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

main() {
  SystemChrome.setEnabledSystemUIOverlays([]);
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
            body: Center(child: TextField()), backgroundColor: Colors.orange));
  }
}

I have a textfield in the screen so whenever the Android Keyboard opens the status bar reappears. I have tried with multiple Android devices and i am getting the same bug.

Is this really a bug in the framework or am i doing something wrong?

I have attached a short video link below to show the bug

https://drive.google.com/file/d/19qs5Rsrfc_G1oN5kbxgKvYQAXpTr8RZx/view?usp=sharing

I have not tested in iOS


Solution 1: Keerti Purswani

Please share some code. I tried adding SystemChrome.setEnabledSystemUIOverlays([]); in initState() and I have a text field, It is working fine.


Solution 2: s k

What I did is after the Keyboard was shown, delay for 2 (the doc says one) seconds and then call setEnabledSystemUIOverlays again.

Future.delayed(Duration(seconds: 2)).then((value) => SystemChrome.setEnabledSystemUIOverlays([]));

According to: https://api.flutter.dev/flutter/services/SystemChrome/setEnabledSystemUIOverlays.html

when the keyboard becomes visible, it will enable the navigation bar and status bar system UI overlays. When the keyboard is closed, Android will not restore the previous UI visibility settings, and the UI visibility cannot be changed until 1 second after the keyboard is closed to prevent malware locking users from navigation buttons.

To regain "fullscreen" after text entry, the UI overlays should be set again after a delay of 1 second. This can be achieved through restoreSystemUIOverlays or calling this again. Otherwise, the original UI overlay settings will be automatically restored only when the application loses and regains focus.