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

安卓商店在应用上架时会要求用户清楚并授权之后才可收集用户和设备信息,如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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter 应用集合是指由不同的开发者或团队开发的一系列基于 Flutter 框架构建的应用程序的集合。这些应用程序可以是各种各样的,包括但不限于社交媒体应用、电子商务应用、新闻阅读应用、音乐播放器、游戏等等。 由于 Flutter 架构的优势,应用开发者可以使用一套代码同时构建跨平台的 Android 和 iOS 应用,大大减少了开发上的工作量和时间成本。因此,Flutter 应用集合可以在不同的平台上同时提供相似或相同的用户体验,保持一致性和流畅性,无论是在 Android 还是 iOS 设备上。 Flutter 的热重载功能使得应用集合的开发更加高效,开发者可以在实时预览应用的改变,节省了重启应用的时间,加快了反馈和迭代的速度。 此外,Flutter 还提供了丰富的组件库,开发者可以利用这些组件快速构建应用的各个界面,并使用 Flutter 的 Material Design 风格或 Cupertino 风格来提供精致的用户界面。 Flutter 应用集合有助于推广 Flutter 框架,展示其强大的跨平台能力和灵活性。同时,开发者也可以通过学习和参考应用集合中的优秀作品,提高自己的开发技能,探索和应用 Flutter 的各种功能和特性。 总之,Flutter 应用集合是一系列由 Flutter 架构开发的应用程序的集合,它们通过跨平台的优势和独特的用户体验,为用户提供了多样和高质量的应用选择,同时也促进了 Flutter 社区的发展和创新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值