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

如何在Flutter中用Shared Preferences实现首次安装弹窗?

使用Shared Preferences实现Android应用首次启动弹窗

核心实现逻辑

通过SharedPreferences存储一个首次启动标记,启动时检查该标记:

  • 首次启动时标记为默认值false,触发弹窗后将标记改为true
  • 后续启动时标记为true,跳过弹窗
  • 应用卸载后SharedPreferences文件会被系统清除,重装后标记回到默认值,再次触发弹窗

具体代码实现

在你的主Activity(比如MainActivity)的onCreate方法中加入以下逻辑:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // 1. 获取SharedPreferences实例(使用系统默认的偏好文件)
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    // 2. 读取首次启动标记,默认值为false
    boolean isFirstLaunch = prefs.getBoolean("isFirstLaunch", false);

    // 3. 判断是否为首次启动
    if (!isFirstLaunch) {
        // 弹出首次启动提示框(这里用系统AlertDialog示例,可自定义弹窗)
        new AlertDialog.Builder(this)
                .setTitle("欢迎使用")
                .setMessage("这是您第一次打开这款应用,祝您使用愉快!")
                .setPositiveButton("知道了", (dialog, which) -> dialog.dismiss())
                .show();

        // 4. 更新标记为true,确保下次启动不再弹出
        SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean("isFirstLaunch", true);
        editor.apply(); // 异步提交修改,比commit()更高效
    }
}

关键注意事项

  • 存储模式:如果使用自定义名称的SharedPreferences(比如getSharedPreferences("MyPrefs", MODE_PRIVATE)),务必使用MODE_PRIVATE模式,保证只有当前应用能访问该文件。
  • 提交方式:推荐使用apply()异步提交修改,它不会阻塞主线程;commit()是同步提交,适合必须确保修改完成后再执行后续逻辑的场景。
  • 弹窗自定义:如果需要更复杂的弹窗样式,可以使用DialogFragment或者自定义布局的Dialog,替换示例中的AlertDialog即可。
  • 生命周期时机:建议在onCreate方法中处理弹窗逻辑,确保弹窗在界面加载完成后显示;如果需要等待界面完全渲染,也可以放在onStart或onResume中(注意避免重复触发)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:01:43