Flutter-入门-基础(一)

343 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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

问题

  1. 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_URLFLUTTER_STORAGE_BASE_URL写入$Home/.bash_profile,重启了电脑就好了

Dart 语法基础

  1. 变量声明
    • var声明变量可自动判断变量类型
    • 直接用类型显示声明String str = 'test';
    • final const来定义不会变化的变量,final只能赋值一次
  2. Dart数据基本类型:int,double,String,Boolean,List,Set,Map
  3. 函数的声明:返回值类型 函数名(参数类型 参数名){函数体}
  4. 流程控制语句,大部分同Java语法
    • if``else

    • whiledo-whilebreakcontinue

    • switch case

    • assert :根据断言值控制流程

    • for

      var 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()都可以
  5. 库的使用 使用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;

参考资料

官网-Mac
官网-中国社区
官网-中文