flutter从入门到精通一

4次阅读

共计 2123 个字符,预计需要花费 6 分钟才能阅读完成。

Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台


flutter 是基于 dart 语言开发的,我们将首先通过几章节介绍下 dart 语言,再详细的学习 flutter

     1.dart 里面是有类型的,并且具有类型校验校验,如果不申明具体类名,而是用 var,dart 就会自动推断变量类型
     2.dart 变量名称是区分大小的,name 和 Name 是两个不同的变量  
     3.dart 数据类型(可以通过 is 关键字判断类型):
  • 整形 int 浮点型:double double 可以被赋值整形或者浮点型,但是 int 必须是整型。
  • 字符串 String
  • 布尔 bool
  • Lsit(数组)
  • Map (字典),类似于 js 中的对象
 // 用 var 来定义变量,能定义任何变量,但是会自动推断变量类型,一旦赋值给某个具体的变量类型后,变量类型不会发生变化了
// void 表示没有返回值, 所有的 dart 代码需要放在 main 方法里面
// 下面定义了一个数组,数组的增加是通过 add()
void main(){var arr=new List();
  arr.add('张四');
  arr.add('张五');
  arr.add('张六');
  print(arr);
}

不同类型的变量,可以通过一些方法进行转换类型,如下:

/**
 * 1,number 和 String 类型之间的转换
 * number=>String  toString()
 * String=>number parse()
 * 2,isEmpty: 可以判断字符串是否为空
 */
  String str='123';
  int myNum=int.parse(str);
  // var myNum=double.parse(str);
    //dart 中,打印信息用 print,这个是全局方法,类似于 js 中的 console.log()
  print(myNum is int);


**tips: 如果预知代码可能会出现 bug,可以将代码包在 try-catch 里面,如下:

  String price='';
  try{var myNum=double.parse(price);
    print(myNum);
  }catch(err){print(0);
  }

dart 中主要有三种集合类型:
List(类似 js 中的数组):

  • List 属性:

    • isEmpty:是否为空
    • isNotEmpty: 是否不为空
    • reversed: 数组翻转
  • List 方法:

    • add:增加元素, 增加一个
    • addAll: 增加元素, 增加多个,传入的是一个数组(主要的功能是拼接数组)
    • indexOf:查找某个元素的索引
    • remove:删除某个元素
    • removeAt:删除某个索引的元素
    • fillRange:修改
    • insert(index,value):指定位置插入数据
    • insertAll:插入多个数据

Set(去重,方法和 List 差不多,将 Set 转化成 List,通过 toList())

  var list=['苹果','香蕉','桃子','苹果','香蕉','桃子','苹果','香蕉','桃子'];
  var set=new Set();
  set.addAll(list);
  var list1=set.toList();

Maps: 其类似于 json,但是 键名 需要用引号引起来

var person={"name":"jack"}
  • 常用属性:

    • keys: 所有的键
    • values:所有的键值
    • isEmpty:
    • isNotEmpty:
  • 常用方法:

    • addAll: 一次增加多个键值对
    • remove:

对于三个集合(List,Set,Map)有些公共的循环遍历方法:

  • for-in
  • forEach():类似于 es6 中的 forEach
  • map:类似于 es6 中的 map
  • where: 类似于 es6 中的 filter
  • any:类似于 es6 中的 some
  • every:类似于 es6 中的 every

函数:包括系统函数 + 自定义函数

  • 系统内置的函数:比如 print
  • 一个方法中是可以嵌套其他方法的,而且可以嵌套很多层,这时候需要注意方法的作用域,(方法里面套方法,返回内部的方法,这就是闭包)
  • 给方法命名建议使用驼峰,首字母是小写,给类命名也是驼峰,但是首字母需要大写
  • 注意 dart 中的方法是没有关键字 function,这个要注意

*dart 中的可选参数,需要将参数放在:[]

  • 箭头函数只能写一句话,和 es6 中的箭头函数有点区别,
  • 方法的形参尽量加上类型
  • 全局变量:会常驻内存,容易污染全局
  • 局部变量:不会常驻内存,会被垃圾机制回收,不会污染全局
  • 如果想让一个变量常驻内存,而且不污染全局,只能用闭包实现,闭包也是这个目的
class Person{
    String name;
  int age;
  // 构造函数,名字和类名一样
  Person(name,age){
    this.age=age;
    this.name=name;
  }
  // 上面有个简写的方法://Person(this.name,this.age)

  getInfo(){return '$name--$age';}
}

main(){
  /**
   * 类(三大特性:封装,继承,多态),* 类需要放到 main 函数外面
   */
  Person p=new Person('唐凯震',25);
  print(p.getInfo());
}  

扫码关注公众号,有更多精彩文章等你哦

正文完
 0