写点什么

Flutter 与 Dart- 入门

用户头像
Android架构
关注
发布于: 21 小时前

Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作。在全世界,Flutter 正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

为什么采用 dart

Flutter 采用 Dart 语言进行开发,而并非 Java,Javascript 这类热门语言,这是 Flutter 团队对当前热门的 10 多种语言慎重评估后的选择。因为 Dart 囊括了多数编程语言的优点,它更符合 Flutter 构建界面的方式

Flutter vs ReactNative 框架对比

ReactNative


  • 采用 Javascript 开发,需学 React,成本高

  • 需要 JavaScript 桥接器,实现 JS 到 Native 转化,性能耗损

  • 访问原生 UI,频繁操作易出性能问题

  • 支持线上动态性,可有效避免频繁更新版本


Flutter


  • 采用 Dart 开发,可直接编译成 Native 代码(易学)

  • 自带 UI 组件和渲染器,仅依赖系统提供的 Canvas(无桥接耗损)

  • 暂不支持线上动态性

Flutter 是革命性的

Flutter 将 UI 组件和渲染器从平台移动到应用程序中,这使得它们可以自定义和可扩展。Flutter 唯一要求系统提供的是 canvas,以便定制的 UI 组件可以出现在设备的屏幕上,以及访问事件(触摸,定时器等)和服务(位置、相机等)。


Dart 程序(绿色)和执行数据编码和解码的原生平台代码(蓝色,适用于 iOS 或 Android)之间仍然有一个接口,但这能比 JavaScript 桥接器快几个数量级。

Flutter 的特性

快速开发

毫秒级的热重载,修改后,您的应用界面会立即更新。使用丰富的、完全可定制的 widget 在几分钟内构建原生界面。

富有表现力和灵活的 UI

Flutter 内置美丽的 Material Design 和 Cupertino(iOS 风格)widget、丰富的 motion API、平滑而自然的滑动效果和平台感知,为您的用户带来全新体验。

原生性能

Flutter 包含了许多核心的 widget,如滚动、导航、图标和字体等,这些都可以在 iOS 和 Android 上达到原生应用一样的性能。

热重载

Flutter 最受欢迎的功能之一是其快速,保留程序状态的热重载 (hot reload)。 您可以在 Flutter 应用程序运行时对其进行更改,重新加载应用程序的代码,将其从之前的操作位置继续下去。一次热重载通常用不到一秒钟。 如果您的应用遇到错误,您通常可以修复错误,然后继续,就像错误从未发生过。 即使你必须完全重新加载,它也是很快速的。

Flutter 开发环境搭建

Flutter中文网上,关于搭建开发环境的教程已经写得比较详细了


Windows 及 Linux 上配置开发环境跟 Mac 上类似,都是 clone 代码,配置环境变量,运行flutter doctor,配置 IDE 这几步,具体配置过程就不赘述了,大家可以参考 Flutter 中文网中的教程

Dart 编程语言快速入门

Dart 是 Google 推出的一门编程语言,吸收了现代编程语言的高级特性,目前 Dart 的版本是 Dart2,官网是:www.dartlang.org/


Developers at Google and elsewhere use Dart to create high-quality, mission-critical apps for iOS, Android, and the web. With features aimed at client-side development, Dart is a great fi


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


t for both mobile and web apps.


Dart 致力于客户端开发,非常适合移动和 Web 应用程序。

Dart 语言的特性

  • Productive(生产力高,Dart 的语法清晰明了,工具简单但功能强大)

  • Fast(执行速度快,Dart 提供提前优化编译,以在移动设备和 Web 上获得可预测的高性能和快速启动。)

  • Portable(易于移植,Dart 可编译成 ARM 和 X86 代码,这样 Dart 移动应用程序可以在 iOS、Android 和其他地方运行)

  • Approachable(容易上手,充分吸收了高级语言特性,如果你已经知道 C++,C 语言,或者 Java,你可以在短短几天内用 Dart 来开发)

  • Reactive(响应式编程)

Dart 的一些重要概念

  • 在 Dart 中,一切都是对象,所有的对象都是继承自Object

  • Dart 是强类型语言,但可以用var或?dynamic来声明一个变量,Dart 会自动推断其数据类型,dynamic类似 c#

  • 没有赋初值的变量都会有默认值null

  • Dart 支持顶层方法,如main方法,可以在方法内部创建方法

  • Dart 支持顶层变量,也支持类变量或对象变量

  • Dart 没有public?protected?private等关键字,如果某个变量以下划线(_)开头,代表这个变量在库中是私有的

Dart 一些语法特点

如果熟悉 java 或者 c#,只需要注意下面的一些语法特性即可,其他的都比较类似,不用特意关注。

命名参数

sayHello({String name}) {print("hello, my name is $name");}


sayHello2({name: String}) {print("hello, my name is $name");}


main() {// 打印 hello, my name is zhangsansayHello(name: 'zhangsan');


// 打印 hello, my name is wangwusayHello2(name: 'wangwu');}


####参数默认值


// 位置参数的默认值 int sum(int a, int b, [int c = 3]) {return a + b + c;}


####匿名函数


test(Function callback) {callback("hello");}


main() {test((param) {// 打印 helloprint(param);});}


####is 和 c#一样, is 运算符用于判断一个变量是不是某个类型的数据


// is!则是判断变量不是某个类型的数据 var s = "hello";print(s is String); // truevar num = 6;print(num is! String); // true


####??= 和 ?.运算符??=运算符 如果 ??= 运算符前面的变量为 null,则赋值,否则不赋值


var param1 = "hello", param2 = null;param1 ??= "world";param2 ??= "world";print("param1 = param2"); // param2 = world


####?.运算符


var str1 = "hello world";var str2 = null;print(str1?.length); // 11print(str2?.length); // nullprint(str2.length); // 报错


####运算符(级联操作)使用..调用某个对象的方法(或者成员变量)时,返回值是这个对象本身,这样就能方面实现链式调用:


class Person {eat() {print("I am eating...");}


sleep() {print("I am sleeping...");}


study() {print("I am studying...");}}


main() {// 依次打印// I am eating...// I am sleeping...// I am studying...new Person()..eat()..sleep()..study();}


####不一样的 try/catch


// try catch 语句 try {print(1 ~/ 0);} catch (e) {// IntegerDivisionByZeroExceptionprint(e);}try {1 ~/ 0;} on IntegerDivisionByZeroException { // 捕获指定类型的异常 print("error"); // 打印出 error} finally {print("over"); // 打印出 over}


####类(Class)不需要用 private, protected, public 等修饰成员变量或成员函数构造函数可以不用方法体,自动对应

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Flutter与Dart-入门