flutter怎么添加ios网络权限_Flutter移动端实战手册

本文是Flutter系列的最终篇,聚焦Flutter在移动端的实际应用。文章详细讲解了如何在iOS上接入Flutter,包括配置环境、解决权限问题、混合开发的步骤,以及调试工具的使用。此外,还介绍了Flutter的多实例管理和调试工具DevTools,帮助开发者更好地理解和应用Flutter进行跨平台开发。
摘要由CSDN通过智能技术生成

4363f8696ddcd3cc73e6437140e57186.png

关注【搜狐技术产品】公众号,第一时间获取技术干货

导读

Flutter又双叒叕来了!本周推送是我们Flutter系列文章的最终篇!《Flutter移动端实战手册》回归实际应用场景,详细讲述Flutter在移动端的应用实践。话不多说,让我们一起来阅读这篇Flutter系列文章的收官之作吧~

Flutter系列文章一共分为三篇:

1.《十分钟带你入坑Flutter》:详细介绍了Flutter整体架构及未来发展前景,并且对Flutter的特性和Dart语言进行了详细介绍。

2.《深入理解Flutter多线程》:深入讲解了Flutter的多线程,以及底层的系统Runner,并且将Flutter的协程、Isolate、iOS的GCD进行了对比。

3.《Flutter移动端实战手册》:详细讲述Flutter跨平台实现方案,以及DevTools调试工具集。

iOS接入Flutter

在进行iOSFlutter的混编时,iOSAndroid的接入方式略复杂,但也还好。现在市面上有不少接入Flutter的方案,但大多数都是千篇一律相互抄的,没什么意义。

进行Flutter混编之前,有一些必要的文件:

  1. xcode_backend.sh文件,在配置flutter环境的时候由Flutter工具包提供;
  2. xcconfig环境变量文件,在Flutter工程中自动生成,每个工程都不一样。

xcconfig文件

xcconfigXcode的配置文件,Flutter在里面配置了一些基本信息和路径,接入Flutter前需要先将xcconfig接入进来,否则一些路径和信息将会出错或找不到。

Flutterxcconfig包含三个文件,Debug.xcconfigRelease.xcconfigGenerated.xcconfig,需要将这些文件配置在下面的位置,并且按照不同环境配置不同的文件。

1Project -> Info -> Development Target -> Configurations

有些比较大的工程已经在Configurations中设置了xcconfig文件,由于每个Target的一种环境只能配置一个xcconfig文件,所以可以在已有的xcconfig文件中import引入Generated.xcconfig文件,并且不需要区分环境。

脚本文件

xcode_backend.sh脚本文件用来构建和导出Flutter产物,这是Flutter开发包为我们默认提供的,需要在工程TargetBuild Phases加入一个Run Script文件,并将下面的脚本代码粘贴进去。需要注意的是,不要忘记前面的/bin/sh操作,否则会导致权限错误。

1/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
2/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed

xcode_backend.sh中有三个参数类型,buildthinembedthin没有太大意义,其他两个则负责构建和导出。

混合开发

随后可以对Xcode工程进行编译,这时候肯定会报错的,但是不要慌张,报错后我们在工程主目录下会发现一个名为Flutter的文件夹,其中会包含两个framework,这个文件夹就是Flutter的编译产物,我们将这个文件夹整体拖入项目中即可。

这时候就可以在iOS工程中添加Flutter代码了,下面是详细步骤:

1.将AppDelegate的集成改为FlutterAppDelegate,并且需要遵循FlutterAppLifeCycleProvider代理;

1#import <Flutter/Flutter.h>
2#import <UIKit/UIKit.h>
3
4@interface AppDelegate : FlutterAppDelegate <FlutterAppLifeCycleProvider>
5
6@end

2.创建一个FlutterPluginAppLifeCycleDelegate的实例对象,这个对象负责管理Flutter的生命周期,并从Platform侧接收AppDelegate的事件。我直接将其声明为一个属性,在AppDelegate的各个方法中,调用其方法进行中转操作&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值