当前位置: 首页 > 科技观察

两周时间,用Flutter做了一个APP

时间:2023-03-12 14:05:34 科技观察

前言Flutter是Google推出的跨平台解决方案。口号是“设计??美丽的应用程序”。国内也有阿里、美团等知名企业在使用和推广。.我个人对它的一些特性非常感兴趣,比如JIT、MaterialDesign、快速开发等等,所以我决定试一试。于是诗词词汇APP诞生了。首先我们来看看它是一款什么样的APP。下面我们从不同的方面一步步讲讲Flutter的发展。一开始,FLutter可以在Windows、Linux、Mac上开发。开发工具可以使用VSCode、AndroidStudio、IDEA等,本文推荐使用AndroidStudio,主要是AndroidStudio提供了FLutterInspector工具,可以实时查看元素,解决界面问题。显示合身问题。搭建开发环境搭建环境的主要步骤:下载SDK,下载地址。配置路径。如果你使用的是Mac或Linux系统,请务必将bin目录添加到系统PATH中。配置依赖源镜像是一个重要的步骤,需要将脚本放在启动shell中。exportPUB_HOSTED_URL=https://pub.flutter-io.cnexportFLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn执行flutterdoctor,这一步会比较长,需要耐心等待。Android开发工具和插件,配置编辑器。配置编辑器主要是为编辑器安装相应的插件。VSCode安装flutter插件,AndroidStudio和IDEA需要安装Flutter和Darter插件。其中,AndroidStudio与IDEA基本相同,与VSCode的主要区别在于:VSCode提供了更好的代码提示功能IDEA提供了FlutterInspector,可以实时检查页面元素,可以根据个人喜好使用和习惯。推荐网站安装配置过程中,可以参考以下中文资料:FlutterChinaFlutter中文文档主要技术要点DartFlutter项目的开发语言是Dart,是谷歌开发的一种面向对象语言,可以编译成ARM和x86代码直接在iOS和Android设备上运行。建议先学习Dart语言官方教程,对Dart有初步了解后再学习和开发Flutter。界面开发终于可以进入Flutter本身了。WidgetFlutter中页面的所有元素都是Widget,分为StatelessWidget和StatefulWidget。顾名思义,StatelessWidget是指没有可变状态的Widget。这类Widget的状态只由创建Widget时传入的参数决定。一旦创建,其状态和在页面上的显示效果不会改变。而StatefulWidget里面有一个可变状态。当通过setState更改这些状态??时,Flutter将重新渲染Widget。在布局的实际开发中,主要用到Row、Column、Container、Expanded、Stack等。Row和Column提供水平和垂直布局,Stack提供堆叠布局。各种容器具有不同的特点,可以根据实际页面需求选择搭配不同的布局。建议学习官方文档和国内维护的中文翻译。外挂主要话题回到诗歌词汇APP。这个APP收集了4000多位诗人的30万多首诗歌。提供古诗词查询、收藏、朗诵等功能,初步实现了社区功能。项目目录结构如下:开发这个APP大概用了一个月的业余时间,每天一两个小时换算成工作日大概是两周左右,开发效率还是很高的。给大家分享一下主要功能和使用的一些插件。切换主题为了实时切换主题颜色,使用了状态管理插件。flutter_redux。极光Push是国内为数不多的为Flutter提供技术支持的厂商之一,极光在此大加赞赏。jpush_flutterQQQQ的Flutter插件提供了基本的登录和分享功能。flutter_qqWeChat微信的Flutter插件,功能稍微丰富一些,包括支付、登录、分享、启动小程序等功能。fluwx事件总线EventBus的大名鼎鼎的event_bus也提供了对Flutter的支持。event_bus录音和音频播放也有很好的支持。audio_recorderaudioplayer2其他如加载HTML、Toast提示、图片选择器、图片加载等也有较好的插件支持。相关插件可在官方插件库查询。安装升级的坑FLutter的安装升级经常会遇到卡死的问题。主要原因是使用了google的源,但是莫名其妙,连用科学上网,设置好国内镜像后,还是会遇到同样的问题。只能通过反复的flutterdoctor或者flutterupgrade,直到问题解决。开发因为笔者最近做了不少Android项目,习惯了Android的XML布局。一开始不太习惯在代码中写页面的形式,但是按照官方的例子练习了几页后,使用代码写页面的优势就体现出来了。页面设计好的时候,开发的时候脑子里构思出一个Widget树,从根节点到每个节点逐级嵌套,写出自然的布局。当Dialog弹出框使用Dialog时,弹出Dialog的Context和Dialog本身都会被压入栈中,所以让Dialog消失的方法是Navigator.of(ctx).pop(),其中不同于安卓和iOS,可能跟Flutter本身所有元素都是Widgets的设计有关。编译Android版本时编译顺利,没有任何问题。但是在编译iOS版本的时候遇到了很多问题,一直到现在都没有解决。问题是使用了audio_recorder和flutter_qq这两个插件。这两个插件其中一个需要设置编译选项!Epilogue开发结束,Release版本的APK终于打包完成。安装到手机上后,发现了惊喜。丝滑如丝,出乎我的意料。转场效果和页面响应速度不输原版APP。总而言之,我还是比较看好Flutter的前景的。毕竟是谷歌出品,项目本身的迭代速度很快。目前是0.11版本。预计1.0正式版将于近期发布。支持颤振。