1

GetXGet.changeTheme()ユーティリティ関数を使用してテーマを変更するときに、ステータス バーの外観を変更する方法を探しています。

これは私のコードです:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      theme: lightTheme(),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Center(
            child: TextButton(
                onPressed: () => {
                      Get.changeTheme(
                          Get.isDarkMode ? lightTheme() : darkTheme())
                    },
                child: Text('Change Theme'))));
  }
}

ThemeData darkTheme() {
  return ThemeData.dark().copyWith(scaffoldBackgroundColor: Colors.grey[900]);
}

ThemeData lightTheme() {
  return ThemeData.light().copyWith(scaffoldBackgroundColor: Colors.white);
}

「テーマの変更」ボタンが押されたときにステータスバーの色を変更する方法がわかりません(スクリーンショット)。

ダークモード

のドキュメントを調べましたが、ステータス バーのテキストの色を白に変更するためにThemeData追加できるプロパティがないようです。darkTheme()私も承知しております

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
  statusBarColor: Colors.white
));

しかし、コードのGetXアーキテクチャにこのコードを配置する場所がわかりません。メソッド内に含めると、main()後でテーマを切り替えることができなくなるためです。また、目的の結果を達成するためだけにプロパティをAppBar()変更できるようにすることも計画していません。brightness

ヒントやアドバイスをいただければ幸いです!

4

1 に答える 1