一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第17天,点击查看活动详情。
Mac Flutter环境安装
下载并安装Flutter开发环境
- 使用国内镜像站
export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn - 下载Flutter项目
git clone -b dev https://github.com/flutter/flutter.git - 配置环境变量(可见 mac的使用--环境变量的配置)
- 执行
flutter进行一些资源的下载 - 执行
flutter doctor来检查flutter环境是否有问题,并根据提示进行修复
使用Android Studio 进行开发
- 在插件中,找到Flutter插件,安装并重新启动
- 创建Flutter项目
使用Visual Studio Code 进行开发
- 打开Visual Studio Code编辑器,View > Command Palette…
- 选择install类型下,
Extensions: Install Extensions,查找flutter进行安装 - 进行验证:View > Command Palette > 输入
doctor执行Flutter:Run Flutter Doctor - 创建项目: View > Command Palette > 执行
Flutter:New Project
问题
- Android Studio 创建项目卡住 原因是由于连接不上flutter的下载地址,可能是由于用了代理的原因。 在Shell中已经调整地址为路由地址,Shell中执行下载是没有问题的,但是打开Android Studio项目却会卡住。
- 创建项目时卡住 解决方法:强制关闭Android Studio,并结束dart进程,打开已创建好的Flutter 项目
- 再次打开已存在Flutter项目,
Pub get卡住 解决方法:因为在Mac Shell中已经执行了export国内Flutter镜像地址,所以切换到Flutter项目下,执行flutter packages get进行加载 - 命令行执行
flutter packages get之后,Run 项目时,Running Gradle task'assemble Debug'卡住 解决方法:将PUB_HOSTED_URL与FLUTTER_STORAGE_BASE_URL写入$Home/.bash_profile,重启了电脑就好了
Dart 语法基础
- 变量声明
var声明变量可自动判断变量类型- 直接用类型显示声明
String str = 'test'; finalconst来定义不会变化的变量,final只能赋值一次
- Dart数据基本类型:int,double,String,Boolean,List,Set,Map
- 函数的声明:
返回值类型 函数名(参数类型 参数名){函数体} - 流程控制语句,大部分同Java语法
-
if``else -
while与do-while,break与continue -
switch case -
assert:根据断言值控制流程 -
forvar list=[1,2,3,4,5] for (var i = 0,j=list.length; i < j; i++) { print(list[i]); } //如果是像list set实现了Iterable还支持 for in for(var item in list){ print(item); }
-
- 类
- 构造函数,Dart只能有一个构造函数,其他需要使用命名构造函数(见下文)
- 可继承多个类
A extends B with C,D - 实现接口还是
A implement B - 创建实例:
MyClass cls = new MyClass()或MyClass cls = MyClass()都可以
- 库的使用
使用
import来引入库- Dart语言内置的库:
'dart:scheme' - 第三方库:
'package:mylib'或本地路径 - 如果导入的库有冲突,可以使用
as重命名import 'package:lib1/lib1.dart'; import 'package:lib2/lib2.dart' as lib2; // ... Element element1 = new Element(); //使用lib1中的Element lib2.Element element2 = new lib2.Element(); //使用lib2中的Element - 导入库的一部分
// 只导入foo import 'package:lib1/lib1.dart' show foo; // 除了foo,其他部分都导入 import 'package:lib2/lib2.dart' hide foo; - 延迟加载库
主要用于几个场景:减少启动时间;加载使用很少的库;
import 'package:deferred/hello.dart' deferred as hello;
- Dart语言内置的库: