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

Flutter插件开发中如何显示Android新版原生ProgressDialog

Flutter插件调用Android原生ProgressDialog显示旧样式问题修复

问题现象

开发Flutter插件时,通过如下代码调用Android原生进度对话框:

ProgressDialog progressDialog =new ProgressDialog(context);
progressDialog.setTitle("Downloading");
progressDialog.setMessage("Please wait while downloading map");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();

实际运行显示旧版Holo风格对话框:
旧样式对话框截图
预期显示新建原生Android项目默认的Material风格对话框:
预期新样式对话框截图

插件默认的AndroidManifest.xml内容如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.map_plugin">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
</manifest>

曾尝试在清单中添加application标签配置主题,但完全不生效,尝试的配置如下:

<application android:theme="@android:style/Theme.Material.Light.DarkActionBar"></application>

问题原因

  • Flutter插件属于Android库模块,库模块清单文件中配置的application级主题会在构建合并时被宿主App的主题配置覆盖,因此修改插件自身清单的application主题无效。
  • 创建ProgressDialog时如果传入的是Application级上下文,或者上下文未关联Material主题,对话框会自动回退到旧版Holo样式。

修复方案

直接在构造ProgressDialog时传入指定的Material主题,同时使用当前前台Activity作为上下文,不要用Application上下文,该方案不受宿主主题配置影响,稳定生效:

// 第一个参数传入当前前台Activity实例(Flutter插件可通过ActivityAware接口获取)
// 第二个参数传入系统自带的Material Light对话框主题,和原生新项目默认样式完全一致
ProgressDialog progressDialog =new ProgressDialog(activityContext, android.R.style.Theme_Material_Light_Dialog_Alert);
progressDialog.setTitle("Downloading");
progressDialog.setMessage("Please wait while downloading map");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();

如果需要适配深色模式,可以替换主题为android.R.style.Theme_Material_Dialog_Alert即可。

注:ProgressDialog类已在Android API 26被官方废弃,长期维护的项目建议使用DialogFragment包裹ProgressBar实现自定义加载对话框,避免后续系统版本兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:48:31