美文网首页
Flutter初探

Flutter初探

作者: 二城默 | 来源:发表于2020-04-20 09:00 被阅读0次

Flutter与原生Android对比:

1.安装包:

flutter 版的 apk 大小会比 android 原生的多出约 6M 左右,其中核心引擎大约 3.2MB,框架+应用程序代码大约是 1.25MB,必需的 Java 代码 .dex 将近 60k,而 assets 文件里还约有 2.1MB 的 ICU 数据等,单纯从安装包上来说,原生是要优于 flutter 的。

2.性能:

flutter 应用在 CPU 和内存的资源占用上会比原生方式多一些,所以单纯的从性能上来说,android 原生是肯定要优于 flutter 的,但是从用户体验上来说,两者的滑动同样顺畅无比,几乎感觉不到差别。

android 原生在内存、CPU 资源占用方面要低于 flutter,并且安装包的体积也要小于 flutter,所以,不考虑其他因素,单纯从性能角度来说,android 原生肯定是要优于 flutter 的。但 flutter 也有它的优点,比如跨平台的开发、毫秒级的热重载等等,另外跨端开发也逐渐的流行起来,所以,我们在学好android原生的基础上,对跨端开发也要抱有积极的心态。

async 表示内部有代码需要延迟执行

由于并没有开启新的线程,只是进行IO中断改变CPU调度,所以网络请求这样的异步操作可以使用async、await,但如果是执行大量耗时同步操作的话,应该使用isolate开辟新的线程去执行。

IOS发布链接:itms-services://?action=download-manifest&url=https://doctest.arcsoft.com.cn/app/IOS/Info.plist

遇到问题1:

chenyingyoudeMacBook-Pro:~ yingyou$ flutter packages get

Waiting for another flutter command to release the startup lock…

解决方法,如下: 

1、关掉Android Studio打开flutter的安装目录/bin/cache/ 

2、删除lockfile文件 

3、继续执行终端

遇到问题2:

Showing All Messages diff: /Podfile.lock: No such file or directory diff: /Manifest.lock: No such file or directory error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

解决方法:进入ios目录下 pod install

pod update --no-repo-update

遇到问题3:

在接入极光推送插件时,闪退,需要添加完整cup的.so库

ndk {

//选择要添加的对应 cpu 类型的 .so 库。

    abiFilters'armeabi','armeabi-v7a','x86','x86_64','mips','mips64','arm64-v8a'

}

it.twsweb.Nextcloud

遇到问题4;

换flutter sdk时遇到问题

删除flutter/.pub-cache文件夹

然后运行flutter packages get就可以了

遇到问题5:

调试闪退,打包不闪退,或反过来

ndk { abiFilters"armeabi","armeabi-v7a","x86","mips"} } sourceSets { main { jniLibs.srcDirs = ['libs'] } }

Element

Element是Widget的实例

遇到问题1:

如何修改DropdownMenuItem高度

进入源码,修改_kMenuItemHeight

只传json:

response =await dio.post(

url,

  data: data,

  cancelToken: cancelToken,

);

传参数字:

response =await dio.post(

url,

  queryParameters: data,

  cancelToken: cancelToken,

);

时间截取

firstDate:newDateTime.now().subtract(newDuration(days:30)),// 减 30 天

lastDate:newDateTime.now().add(newDuration(days:30)),// 加 30

///时间格式化

import 'package:intl/intl.dart';

DateTime dateTimeNow = DateTime.now();

var format =new DateFormat("yyyy-MM-dd");

var dateTimeStart = format.format(dateTimeNow);

做打卡日历(要求固定6行,每行七天)思路是获取当月的List<DateTime>时利用时间截取,截取当月一号的周一开始的后面42天

Flutter控件:(方法互调)

final VoidCallback onLongPress;

void _onLongPress() {

widget.onLongPress();

}

在控件中调用_onLongPress,可以调用到传入的onLongPress方法回调

从之后页面返回后刷新当前页面指定数据

生成.g.data文件

flutter packages pub run build_runner build

flutter packages pub run build_runner build --delete-conflicting-outputs

flutter packages pub run build_runner watch

替换符号

applyDescription.replaceAll("\r\t", "\n")

ListView自适应

shrinkWrap:true,

physics:const NeverScrollableScrollPhysics(),

Text : overflow: TextOverflow.ellipsis

TabView不可滑动:

physics:new NeverScrollableScrollPhysics(),

横竖屏:

OrientationPlugin.forceOrientation(DeviceOrientation.portraitUp);

SystemChrome.setPreferredOrientations([

  DeviceOrientation.portraitUp,

  DeviceOrientation.portraitDown,

  DeviceOrientation.landscapeLeft,

  DeviceOrientation.landscapeRight,

]);

IOS播放视频需要权限

收起键盘

FocusScope.of(context).requestFocus(new FocusNode());

ios开发,build.gradle中可能要换成"../build";"/build"

DropdownButton的List第一项与value值必须一样

弹出框

showDialog(

// 第一个 context 是参数名,第二个 context 是 State 的成员变量

  context:context,

  builder: (_) {

return AlertDialog(

// dialog 的内容

      content:Text("确定要提交请假申请吗?"),

      // actions 设置 dialog 的按钮

      actions: [

RaisedButton(

disabledColor: Colors.blue,

            child:Text(

'确定',

              style:TextStyle(color: Colors.white),

            ),

            // 用户点击按钮后,关闭弹框

            onPressed: () {

ApplyHoliday();

              Navigator.pop(context);

            }),

        RaisedButton(

color: Colors.grey,

            child:Text(

'取消',

              style:TextStyle(color: Colors.white),

            ),

            // 用户点击按钮后,关闭弹框

            onPressed: () {

Navigator.pop(context);

            }),

      ],

    );

  },

);

相关文章

  • Flutter - Key的原理

    前言 上篇文章我们简单探索了Flutter的渲染原理---Flutter初探渲染原理初探[https://www....

  • Flutter优秀文章汇总_闲鱼5连,6连(更新最后一公里)

    转载 Android Flutter内存初探 Flutter是如何使用内存,又会对Native App的内存带来哪...

  • Android Flutter实践内存初探

    摘要:Android Flutter实践内存初探 闲鱼技术-匠修我们想使用Flutter来统一移动App开发并做了...

  • Flutter 初探

    Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量原生应用的全新移...

  • Flutter初探

    官网介绍:Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flu...

  • Flutter初探

    简述 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。Flutte...

  • Flutter初探

    作为一名长期web前端开发,这次涉及app开发,我自我感觉确实有点膨胀。本篇我主要是以web开发者在flutter...

  • Flutter初探

    Flutter的热度很高,在项目中即将开始应用它,本篇简单介绍如何在MacOS中安装和配置一个Hello Worl...

  • Flutter初探

    以下内容来自组内分享,如有侵权,请联系作者删除。目录: 什么是Flutter? Flutter环境配置 如何创建一...

  • Flutter 初探

    Flutter是一款移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序,媲...

网友评论

      本文标题:Flutter初探

      本文链接:https://www.haomeiwen.com/subject/lexcdqtx.html