You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何在Android端将键盘设置为深色模式?

Android端实现深色键盘的可行方案

方案1:依托系统原生适配(Android 10+)

Android 10及以上系统支持自动跟随应用主题切换键盘明暗,只要做好两步配置:

  • Flutter侧确保ThemeData的深色属性正确:
    ThemeData darkTheme = ThemeData.dark().copyWith(
      brightness: Brightness.dark,
      colorScheme: ColorScheme.dark(primary: Colors.blue),
      // 你的其他自定义主题配置
    );
    
  • Android原生侧,在android/app/src/main/res/values/styles.xml里让应用主题继承支持日夜切换的Material主题:
    <style name="LaunchTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
        <!-- 保留原有配置即可 -->
    </style>
    
    同时在values-night/styles.xml中配置对应的深色主题样式,系统会根据Flutter的brightness自动触发键盘切换到深色模式。

方案2:原生代码调用适配低版本(Android 8+)

如果要兼容Android 10以下的版本,可以通过MethodChannel调用Android原生代码强制设置键盘主题:

  • Flutter侧封装调用方法:
    import 'package:flutter/services.dart';
    
    class KeyboardHelper {
      static const _channel = MethodChannel('com.yourapp/keyboard');
    
      static Future<void> enableDarkKeyboard() async {
        try {
          await _channel.invokeMethod('enableDark');
        } on PlatformException catch (e) {
          print('设置深色键盘失败: ${e.message}');
        }
      }
    }
    
  • Android端在MainActivity中实现方法:
    import android.view.inputmethod.InputMethodManager
    import android.content.Context
    import io.flutter.embedding.android.FlutterActivity
    import io.flutter.embedding.engine.FlutterEngine
    import io.flutter.plugin.common.MethodChannel
    
    class MainActivity : FlutterActivity() {
      private val CHANNEL = "com.yourapp/keyboard"
    
      override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
          super.configureFlutterEngine(flutterEngine)
          MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
              when (call.method) {
                  "enableDark" -> {
                      val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
                      // 调用系统API设置深色输入法主题
                      imm.setInputMethodTheme(android.R.style.Theme_DeviceDefault_Dark)
                      result.success(null)
                  }
                  else -> result.notImplemented()
              }
          }
      }
    }
    
    注意:部分第三方输入法可能不支持自定义主题,建议在调用前判断系统版本(Android 8及以上支持该API)。

方案3:引导用户适配第三方输入法

像百度、搜狗这类主流第三方输入法,本身自带跟随系统/应用主题的深色模式选项。如果上述方案不生效,可以在应用的设置页面添加提示,引导用户开启输入法的深色模式。

内容的提问来源于stack exchange,提问作者rozerro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:10:27