zoukankan      html  css  js  c++  java
  • flutter从入门到精通一

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

    file
    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);
    

    file
    **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());
    }  
    

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

    file

  • 相关阅读:
    通过keras例子理解LSTM 循环神经网络(RNN)
    [机器学习]集成学习--bagging、boosting、stacking
    [机器学习]梯度提升决策树--GBDT
    [机器学习]回归--Decision Tree Regression
    [机器学习]回归--Support Vector Regression(SVR)
    [机器学习]回归--Polinomial Regression 多项式回归
    [机器学习]回归--(Simple LR and Multiple LR)
    [深度学习] 权重初始化--Weight Initialization
    深度学习实践经验汇总
    Deeplearning.ai课程笔记--汇总
  • 原文地址:https://www.cnblogs.com/tangkaizhen/p/11791202.html
Copyright © 2011-2022 走看看