問題タブ [android-dark-theme]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
490 参照

android - AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM が機能しない

編集:下部に更新

私はアプリケーションでこれを呼び出していますonCreate:AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)

次に、デバイスの設定 (設定 -> ディスプレイ -> ナイト モード (スイッチ: オン/オフ)) に移動し、アプリケーションを再開すると、テーマが適用されません。デバイスの設定でナイトモードをオンまたはオフにしても、テーマは適用されません。

また、ブレークポイントを追加し、デバイスの設定からダークモードがオンになっている場合でも、以下が返されることを確認しましたfalse(注: アプリはダークモードをオフにして起動されました)。

デバイス設定からテーマを変更すると、application'sリソースが更新されないようです。

デバッグ目的で、Application クラスの次の関数をオーバーライドします。

そしてそれは呼び出されています。

編集:これが問題を引き起こしているようです。これを Application クラスに持つ:

上記のコードを削除すると、機能します。

0 投票する
2 に答える
411 参照

android - エラー: 正しいプロバイダーが見つかりませんでしたこの消費者の上ウィジェット

Drawer 内の Switch で Dark/Light テーマを使用したい。私の「drawerDosyasi.dart」に「Switch」があります。しかし、最初に、HomePage(Anasayfa) で SwitchListTile を使用してコードを書きたかったのです。

2 つの質問:

1-私は今このエラーがあります

エラー: このコンシューマー ウィジェットの上に正しいプロバイダーが見つかりませんでした

これBuildContextは、選択したプロバイダーを含まない を使用したために発生する可能性があります。一般的なシナリオがいくつかあります。

  • 読み取ろうとしているプロバイダーは別のルートにあります。

    プロバイダーは「スコープ」です。そのため、ルート内にプロバイダーを挿入すると、他のルートはそのプロバイダーにアクセスできなくなります。

  • BuildContext読み取ろうとしているプロバイダーの祖先である を使用しました。

    Consumer が MultiProvider/Provider の下にあることを確認します。これは通常、プロバイダーを作成してすぐに読み取ろうとしたときに発生します。

    たとえば、次の代わりに:

    builder次のように使用することを検討してください:

2-スイッチをドロワーに移動できません。null にするなどのエラーが発生します。だから私はDrawerHeaderのSwitch()でダーク/ライトモードを変更できるようにしたい

誰でも私のコードを修正できますか? 私は初心者で、2日間問題を解決できません。

アナサイファ・ダート

drawerDosyasi.dart

theme.dart

0 投票する
1 に答える
87 参照

android - DrawerHeaderのSwitchでダーク/ライトモードを切り替えられるようにしたい

DrawerHeaderのSwitchでダーク/ライトモードを切り替えられるようにしたい。しかし、私はエラーが発生しています。

エラー: このコンシューマ ウィジェットの上に正しいプロバイダが見つかりませんでした これBuildContextは、選択したプロバイダを含まない を使用したために発生する可能性があります。一般的なシナリオがいくつかあります。

  • 読み取ろうとしているプロバイダーは別のルートにあります。プロバイダーは「スコープ」です。そのため、ルート内にプロバイダーを挿入すると、他のルートはそのプロバイダーにアクセスできなくなります。
  • BuildContext読み取ろうとしているプロバイダーの祖先である を使用しました。Consumer が MultiProvider/Provider の下にあることを確認します。これは通常、プロバイダーを作成してすぐに読み取ろうとしたときに発生します。

アナサイファ・ダート

drawerDosyasi.dart

theme.dart

pubspec.yaml

アプリケーションは次のようになります

ここに画像の説明を入力