main.dart
にこれいれる
Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); // ステータスバーの上部の変な半透明を消す SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( statusBarColor: Colors.transparent, ));
なぜこれデフォルトじゃない?
いちおうプラグインもあるけど要らないかもね https://stackoverflow.com/questions/55211640/transparent-status-bar-in-flutter
縦固定の、これもだけどAndroidが最初に起動する瞬間は一瞬縦固定とか半透明じゃないバーが見えるんだよね・・。
// 縦固定 SystemChrome.setPreferredOrientations(<DeviceOrientation>[ DeviceOrientation.portraitUp, ]);
AndroidのKotlin側でやるコードがあるけど使える? https://stackoverflow.com/questions/29311078/android-completely-transparent-status-bar
android/app/src/main/kotlin/jp/company/app_name/MainActivity.kt
を開いて
import
達
import android.os.Bundle import android.os.Build import android.view.View import android.graphics.Color import android.view.WindowManager import android.view.Window
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) var window = this.activity.getWindow() if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) { setWindowFlag(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, true) } if (Build.VERSION.SDK_INT >= 19) { window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN } if (Build.VERSION.SDK_INT >= 21) { setWindowFlag(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false) window.statusBarColor = Color.TRANSPARENT } }
setWindowFlag
の定義
private fun setWindowFlag(bits: Int, on: Boolean) { val win = window val winParams = win.attributes if (on) { winParams.flags = winParams.flags or bits } else { winParams.flags = winParams.flags and bits.inv() } win.attributes = winParams
おそらくAndroid/iOSネイティブではここで固定とかするっぽい
Flutter: how to prevent device orientation changes and force portrait? - Stack Overflow
Hejazi氏が投稿してCommunity♦氏に編集された投稿の。
AndroidはつまりscreenOrientationをこうする。iOSはXcodeいじる。
<activity android:name=".MainActivity" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:screenOrientation="portrait"
しかしこれやっても最初に横向きにしてたら横向きは見える模様・・・