flutter应用安卓商店合规化处理

2023-10-26

安卓商店在应用上架时会要求用户清楚并授权之后才可收集用户和设备信息,如mac地址 imei等

1、安卓开发者会在application中进行此操作,flutter应用可在main文件中添加授权对话框,

flutter的MyApp()可等同看作是应用的application入口。

import 'package:flutter/material.dart';

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

///等同于应用的application
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage());
  }
}


///为了解决路由跳转问题
class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("route"),
      ),
      floatingActionButton: FloatingActionButton(onPressed: (){
        Navigator.push(contexts,MaterialPageRoute(
                            builder: (context) {
                              return AgreementPage(1);
                            },
                          ));
      }),
    );
  }
}

在MyApp()中添加对话框,用户点击同意即进行部分三方插件的初始化,如极光、融云等。

可在MyApp()的build的body中添加判断,初次安装先处理授权框,同意后再正常初始化内容

  @override
  Widget build(BuildContext context) {
    appContext = context;
    return FutureBuilder<CacheManager>(
      future: CacheManager.preInit(context),//进行初始化
      builder: (BuildContext context, AsyncSnapshot<CacheManager> snapshot) {
        //定义route
        var _widget = (snapshot.connectionState == ConnectionState.done && 
                   snapshot.data != null)
            ? Router(routerDelegate: _routeDelegate)
            : snapshot.connectionState != ConnectionState.done
            ? Scaffold(
                    body: Center(
                      child: CircularProgressIndicator(color: ColorTool.red),
                    ),
                  )
                :_showAgreementWindow(appContext);
        return _widget;
      },
    );
  }

2、授权框中会有可点击的用户协议和隐私政策,跳转可能会遇到问题

Navigator operation requested with a context that does not include a Navigator.

这是由于MyApp 是一个可变StatefulWidget这种情况下,如上情况提示路由控制器需要一个context但是当前navigator并不包含,通俗的讲要使用路由(Navigator),根控件不能直接是 MaterialApp.解决方法:将 MaterialApp 内容再使用 StatelessWeight 或 StatefulWeight 包裹一层。如图1所示。

可参考flutter报错Navigator operation requested with a context that does not include a Navigator

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flutter应用安卓商店合规化处理 的相关文章

  • android studio 和 android SDK 捆绑的 eclipse 版本有什么区别

    我没有 Android 开发经验 我想开始编写应用程序 The 官方开发者工具页面 http developer android com tools index html包含两个不同 IDE 的链接 第一个包含捆绑的 ADT 版本Eclip
  • HttpURLConnection getResponseCode 未返回

    我尝试在 Android 上使用 HttpURLConnection 将文件发布到我们的服务器 但 getResponseCode 调用只是挂起并且永远不会返回 该问题源于文件对于服务器来说太大 因此服务器发回 HTTP 错误代码 413
  • 如何在 Flutter 上创建复制到剪贴板事件?

    目前我想在用户设备上为 复制到剪贴板 创建事件 当用户单击 列表视图前导图标 内容复制 时 文本应存储在他的设备剪贴板上 请问有人可以帮助我吗 Widget buildListItem BuildContext context Docume
  • Android 在 ROOM 数据库中插入大量数据

    我有大约 10 个模型 每个模型都有超过 120K 行和 90 列的记录 其中包含双数组值 在 Room 中插入任何模型都需要超过 125 130 秒 任何人都可以建议我需要做什么才能使用一些批量插入技术来保存所有这些 120K 该技术大约
  • 修改 Settings.apk 以与 Project Glass 配合使用

    我正在尝试构建要在 Google I O 的 Hacking Glass 会议上在 Glass 上使用的 Settings apk 他提到 为了让设置 apk 正常工作 需要修改清单中的一行 这是 AOSP 清单 http pastebin
  • 带有电子墨水显示屏的 Android

    我有兴趣使用 AndroidE Ink http www eink com technology howitworks html为基础的平台 我知道已经是证明了 http vimeo com 3162590MOTO 曾经使用过 但我有兴趣将
  • Zxing库无法解析

    我正在使用 zxing 库开发应用程序 我导入了zxing项目到我的工作场所 当我导入时遇到了一些问题 通过编译项目java 1 7 我做到了 CameraConfigurationUtils失踪 我从library source Reso
  • 将文本视图添加到布局中?

    如果我的按钮不移动 我就无法在按钮上方放置文本视图 我该如何解决这个问题 被困在这个问题上 4 个小时了 这很伤心 因为我正在尝试在我的布局上添加一个文本视图 我的布局中心有 4 个按钮 我只想在四个按钮上方添加一个文本视图 如下所示 Te
  • 如何通过代码改变Android SlidingDrawer的方向?

    当我从横向模式更改为纵向模式时 我无法找到设置 SlidingDrawer 方向的方法 反之亦然 最初我将 xml 的方向设置为垂直 当手机处于横向模式时 我需要将方向更改为水平 因此我将手柄放在左侧 有人有什么想法吗 我认为按照标准这是不
  • 如何使用 Mikephil 饼图从项目中删除小数位

    这是整数的静态值 private int upload 14 bill 15 unbill 85 total 100 unupload 12 sign 10 unsign 90 print 12 unprint 88 设置饼图条目 Arra
  • 如何防止机器人程序和垃圾邮件 API 请求?

    我正在使用react native 开发一个Android 应用程序 该应用程序与我正在为该应用程序开发的API 进行通信 该 API 是使用 Laravel 和 Laravel Passport 构建的 我知道 Android 应用程序可
  • Kotlin 1.6.0 的 proguard / R8 删除了数据类元数据

    我有一个包含一些数据类的包 我尝试使用 Kotlin 反射在运行时访问构造函数clazz primaryConstructor 一切都按预期工作 但是当我启用 R8 时 数据类元数据被删除 例如当我检查是否KClass isData它返回
  • 如何从 Java 类调用 Kotlin 类

    我需要将意图从 java 活动传递到 Kotlin 活动 Java活动ProfileActivity class Intent selectGameIntent new Intent ProfileActivity this kotlin
  • android拦截最近的应用程序按钮

    我有一个针对儿童的应用程序 我不希望他们能够单击 最近使用的应用程序 按钮 看起来像两个矩形叠在一起的按钮 我正在负责捕获后退按钮和主页按钮 并且我已经搜索并阅读了很多有关尝试捕获 最近的应用程序 按钮的信息 但大多数人说你不能 或者他们的
  • MediaPlayer.getDuration() 返回错误的持续时间

    媒体播放器的getDuration 方法为我提供了某些音频文件的错误值 我认为所有这些文件的共同特征是它们是使用 Audacity 或其他一些音频编辑工具进行操作的 当尝试将 MediaPlayer 进度绑定到进度栏时 这是一个问题 我继续
  • Android 布局崩溃

    I use a XWalkView https crosswalk project org 加载网页和视频查看器 https github com Bilibili ijkplayer在我的应用程序中播放实时视频 我希望 IjkVideoV
  • proguard 不会删除日志

    In proguard rules pro 我有以下配置 assumenosideeffects class android util Log public static boolean isLoggable java lang Strin
  • 如何在ListView中添加页脚?

    我正在开发一个应用程序 在我的应用程序中 我使用 Listview 使用 dom 解析显示数据 我想在列表视图中添加页脚 当我单击页脚时将更多数据添加到列表视图中 我附加了图像 我想要该设计和流程 请参考image1和imgae2 我在红色
  • 在 Android 中使用 SQL (JDBC) 数据库

    在旧的 Java 应用程序中 我使用以下代码连接到 SQL 数据库并将其用于某些查询 private Connection dbConnection null System setProperty derby system home C C
  • Gradle 找不到 Android Compose 编译器

    我对这个问题感到非常困惑 我的 gradle 文件中有以下几行 implementation androidx compose runtime runtime 1 0 0 alpha04 implementation androidx co

随机推荐

  • 前端下载文件(Blob)的几种方式使用Blob下载文件

    前端下载文件的几种方式 使用Blob下载文件 在前端下载文件是个很通用的需求 一般后端会提供下载的方式有两种 1 直接返回文件的网络地址 一般用在静态文件上 比如图片以及各种音视频资源等 2 返回文件流 一般用在动态文件上 比如根据前端选择
  • IntelliJ IDEA 必备插件(持续更新...)

    插件名称 功能描述 gitignore 过滤提交到git仓库的文件 Alibaba Java Coding Guidelines 阿里巴巴Java规约检查插件 gitflow Integration git flow集成插件
  • python配置opencv环境

    1 下载python3 7 2 它自带pip 直接输入 pip install opencv python pip install numpy pip install matplotlib 安装不成功则在pip install XXX命令的
  • 《C++语言基础》程序阅读——和对象找感觉

    返回 贺老师课程教学链接 按照封装与信息隐藏的原则 除非特别需要 类中的数据成员需要设置为私有 由此带来的问题是 在类外如何访问这些私有成员 下面4段程序概括了常用的方法 请仔细阅读下面的程序 在阅读过程中 画出对象 变量在内存中的表示图
  • Unity如何把游戏导出成手机安装包

    文章目录 前言 使用环境 步骤 添加模块 添加场景 导出 平台 导出前的设置 构建APK 其他文章 前言 本文章主要演示了 如何将制作好的游戏 导出成APK 安装到手机上 使用环境 Unity2022 步骤 添加模块 确保你已经安装了And
  • Python中sub()用法

    Python来进行查询和替换一个文本字符串 可以使用sub 方法来进行查询和替换 sub方法的格式为 sub replacement string count 0 replacement是被替换成的文本 string是需要被替换的文本 co
  • 编译内核、更新源

    1 ubuntu下面修改更新源 sudo gedit etc apt sources list 2 编译内核 1 cd 到 usr src 下 解压下载的内核源代码包 2 make mrproper 清理生成的文件 貌似对第一次编译内核没有
  • STM32F103 GPIO内部电路图

    GPIO结构图 GPIO工作模式 输入模式 输入浮空 输入上拉 输入下拉 模拟输入 输出模式 开漏输出 开漏复用功能 推挽式输出 推挽式复用功能 输入浮空 输入上拉 输入下拉 模拟输入 开漏输出 开漏复用功能 推挽式输出 推挽式复用功能
  • 掌握Python的X篇_1_认识Python(做什么?;是什么?:控制台使用、Python的本质就是一个exe程序;python是一个翻译器机器:人写的代码转为机器语言)

    掌握Python的X篇 1 认识Python 1 为什么学习Python 2 什么是Python 2 1介绍控制台及其基本使用 2 1 1 控制台的启动方法 2 1 1 控制台及使用 2 1 Python的本质 就是一个exe程序 3 Py
  • xenomai 在X86平台下中断响应时间测试

    版权声明 本文为本文为博主原创文章 转载请注明出处 如有问题 欢迎指正 博客地址 https www cnblogs com wsg1100 本文主要讲述xenomai 在X86平台上的中断响应时间测试 1 中断响应时间 实时操作系统的意义
  • Eclipse的启动问题【an error has occurred see the log file】

    今天打开Eclipse的时候出现来了一个问题 导致了Eclipse打不开 错误的提示是 An error has occurred See the log file 谷歌了一下 解决的办法是 删除eclipse的临时文件 eclipse c
  • html文章整体居中,HTML如何让文字居中?附两种方式

    我们在编写一个网页时 经常需要将文字居中 那么这篇文章小编教你HTML如何让文字居中 方法一 居中标签中可以直接添加align center 样式 使文字居中 具体代码如下 w3cschool 编程狮 w3cschool 编程狮 w3csc
  • 用python分析NBA联盟球员信息,才知道这些秘密!

    作者 锋小刀 微信搜索 Python与Excel之交 关注我的公众号查看更多内容 前言 NBA由北美三十支队伍组成的男子职业篮球联盟 汇集了世界上最顶级的球员 是美国四大职业体育联盟之一 本文爬取了NBA中国官方网站球员信息 进行数据可视化
  • 数据库索引背后的数据结构之B-树和B+树

    文章NO1 数据库查询为什么要使用索引 从理论上讲 假设数据库中的某一个表有108条记录 数据库管理系统一个页面大小4KB 最多能存放100条记录 那么 108条记录将分成 106页来存储 总的存储开销为4KB 106 3906MB 3 8
  • C++实现动态数组

    C 实现动态数组 1 数组初始化 2 给数组赋值 3 打印数组 4 增加数组长度 5 数组最后一个值替代最小值 6 逆置数组元素 7 逆置数组中指定位置范围的元素 8 删除数组中值为x的所有元素 9 删除所有介于s和t之间 包含s与t 的元
  • 永磁同步电机矢量控制(六)——MTPA最大转矩电流比控制

    恰饭一下 已经过了工作的年纪 在这里稍微出一下自己做的一套永磁同步电机的教程 为了解决电机控制入门难的问题 我将自己从一知半解到现在的学习记录整理成十个部分学习教程 从基础的矢量控制 到应用性较强的MTPA 弱磁控制等 最后深入到无速度传感
  • 边缘智能聚焦嵌入式世界

    没有什么超出了我们的想象力的极限 我们习惯于在间谍电影中看到的东西需要进行大规模升级 以超越现在认为的标准 德国纽伦堡 一切都超出了我们的想象范围 而且我们习惯于在间谍电影中看到的东西需要进行大规模升级 以超越现在认为的标准 这在Embed
  • redis 、mysql数据库每秒的访问量

    对于redis redis是内存数据库 数据保存在内存中 当然速度快 理论上 redis是单进程单线程模式 采用队列模式将并发访问转为串行访问 而这种模式不但没有影响它的性能 反而因为这样设计而变得更快 redis是NOSQL 即非关系型数
  • (JS逆向2022.04.11) 某奇艺模拟登陆(不含滑块

    文章目录 目录 文章目录 一 分析参数 二 逆向过程 dfp password qd sc 三 总结 目标网站 aHR0cHM6Ly93d3cuaXFpeWkuY29tLw 文章不做任何商业用途 仅供学习参考 一 分析参数 1 首先抓包查看
  • flutter应用安卓商店合规化处理

    安卓商店在应用上架时会要求用户清楚并授权之后才可收集用户和设备信息 如mac地址 imei等 1 安卓开发者会在application中进行此操作 flutter应用可在main文件中添加授权对话框 flutter的MyApp 可等同看作是