dmz社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 948|回复: 1

[混合APP] dart各种声明与运算符/函数/方法

[复制链接]
  • TA的每日心情
    奋斗
    2023-7-31 00:00
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    101

    主题

    132

    帖子

    742

    积分

    荣誉会员

    积分
    742

    发表于 2021-5-10 21:28:40 | 显示全部楼层 |阅读模式

    本站资源全部免费,回复即可查看下载地址!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    //变量声明:
    定义变量 : var/string/int/double/bool/list/maps/dynamic
    注意: dynamic 可以存储任意类型,编译器则会关闭对此变量的类型检查,正确性需要自己来保证  
    注意事项 : string类型变量可以用 ' / " / ''' / """ 来包裹, 3个单引号或双引号可以多行
              在dart中 int 整数型 double 小数型

    内容拼接 : string拼接直接在双引号中拼接要在变量前加$ 例:print("$var $var"),拼接符 + 例: var1 +'/'+ var2              
    list声明: 例: var a = [];    例: var b=new List();  例:var c = new List<String>();  访问: print(a[0])
    map 声明: 例: var a = {'name':'张三','age':14};  例:var a = new Map(); b['name']='李四'  访问:a['name']
    enum enumName {
      
    }

    //运算符
    算数运算符: + - * / %  ~/(取整)
    关系运算符: > < = != <= >=
    逻辑运算符: !(取反)  &&(并且)  ||(或者)
    赋值运算符: =   ??=(变量为null则赋值) ++ --  +=  -= *= /= ~/=
    条件运算符: a = bool ? a : b;(三元运算符)     a =  b ?? c;(b为不为null则取b否者取c)
    条件表达式: if switch

    //定义常量 coust/final           
    count 声明必须赋值
    final 可以先声明后赋值且惰性加载

    //循环
    for / while / do--while         //循环      
    break / continue                //跳出循环 / 跳出本层循环

    //list数组(如果想要数据没有重复可以用Set )
    属性:
    list.length                    //获取list的长度
    list.reversed                  //list数据翻转
    list.isEmpty                   //list是否为空
    list.isNotEmpty             //list是否不为空
    方法:
    list.add('a')                  //增加数据
    list.addAll(['a','b'])      //拼接数组(可用于往数组中批量添加数据)
    list.indexOf('a')           //查找数据并返回数据索引,没有则返回-1
    list.remove('a')            //删除数组中的指定值
    list.removeAt(0)            //删除数组中指定索引下的值
    list.fillRange(开始位置,结束位置,值)    //修改数据
    list.insert(index,value)    //指定位置插入数据
    list.insertAll(index,list)     //指定位置插入list
    list.toList()               //其他类型转换为list类型
    list.join('分隔符')          //list转换成文本
    string.split('分隔符')       //数组合并成文本
    list.forEach()              //遍历循环
    list.where()                //遍历循环查找数据
    list.map()                     //遍历循环修改数据
    list.any()                  //有满足条件就返回true
    list.every()                //所有满足条件就返回true
    //List生成指定数量数据
    List.generate(生成数量,(i){
       
    })

    //map
    属性:
    map.keys                    //获取所有key值
    map.values                  //获取所有value值
    map.isEmpty                 //map是否为空
    map.isNotEmpty                 //map是否不为空
    方法:
    map.remove(key)             //删除数据
    map.addAll({..})            //添加数据
    map.containsValue('abc')    //是否存在该值
    map.containsKey('age')      //是否存在该键
    map.forEach()              //遍历循环
    map.where()                //遍历循环查找数据
    map.map()                     //遍历循环修改数据
    map.any()                  //有满足条件就返回true
    map.every()                //所有满足条件就返回true


    async / await   异步

    //类型转换
    int.parse(要转换为整数型的变量)     //变量转换为整数型
    double.parse(要转换为小数型的变量)  //变量转换为小数型
    变量.toString()                  //变量转换为文本型
    json.decode(json)      //json转map
    json.encode(map)       //map转json


    //时间操作
    var now = DateTime.now().microsecondsSinceEpoch  //获取当前时间戳
    DateTime.fromMillisecondsSinceEpoch(时间戳) //时间戳转时间
    DateTime(2021,4, 0).day       //获取本月有多天数


    //判断数据类型
    变量.isEmpty        //判断变量是否为空
    变量.isNaN          //判断变量的值是否为NaN

    try{
      
    }catch(err){
      
    }

    //引入 库
    import "lib/data.dart";   //自定义库引入
    import "dart:io";         //dart自带库引入


    //第三方库导入流程
    1、从下面网址找到要用的库
            https://pub.dev/packages
            https://pub.flutter-io.cn/packages
            https://pub.dartlang.org/flutter/

    2、项目根目录下创建一个pubspec.yaml文件,内容如下
        name: xxx
        description: A new flutter module project.
        dependencies:  
            http: ^0.12.0+2
            date_format: ^1.0.6

    3、引入库(具体引入可以看 流程1)
    import 'package:date_format/date_format.dart';        


    //函数定义于用法
    1、可选参数函数 用[]包裹同时可选参数可以设置默认值
    String getInfo(String Name,[String Sex='男',int Age]){
        String str = "$Name--$Age";
        if(Sex!=null) str=str+"--$Sex";
        return str;
    }
    print(getInfo('张三','男',12));

    2、命名参数函数 用{}包裹,在运行函数是需要带上参数名称如果 Sex:'女'
    String getInfo(String Name,{String Sex='男',int Age}){
        String str = "$Name--$Age";
        if(Sex!=null) str=str+"--$Sex";
        return str;
    }
    print(getInfo('张三',Sex:'女',Age:12));

    3、匿名函数(函数赋值于变量在运行)
    写法一:
    var Name = (String name){
        print("这是一个匿名方法,输入的参数内容是 $name");
    };
    Name('aaa');

    写法二:
    void Name(String name){
          print("这是一个匿名方法,输入的参数内容是 $name");
    };
    var func = Name;
    func('bbbb');

    4、箭头函数
    //普通代码
    List list=[4,1,2,3,4];
    var newList=list.map((value){
       if(value>2){
         return value*2;
       }
       return value;
    });
    print(newList.toList());
    //上面代码通过箭头函数简写后的代码
    var newList2=list.map((value)=>value>2?value*2:value);
    print(newList2.toList());

    //通过箭头函数输出list内容
    list.forEach((value)=>print(value));

    6、闭包函数(常驻内存/不污染全局)   
    //闭包: 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)
    //闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。

    func(){
        int a=1;
        func2(){
            a++;
            return a;
        }
        return func2;
    }
    var f = func();
    print(f());  //2
    print(f());  //3
    print(f());  //4


    //类
    class       //声明一个类
    static      //声明一个静态属性或方法
    abstract    //声明抽象类(dart在声明的时候只有普通类和抽象类不存在接口)

    extends     //继承
    with        //添加类(可以先继承类后在添加类,不能添加已经继承的类)
    implements  //以接口形式继承(可以一个或多个)

    类名.方法名   //命名构造方法声明  例:Person.row(this.name,this.sex){....}


    运算符:
    ?     条件运算符
    as    类型转换
    is    类型判断
    ..    级联操作 (连缀)


    命名构造方法

    1、与对象同名的方法既为构造方法
    2、方法或属性以 _ 开头即为私有
       
    Web(String name,num age,String sex) : super(name, age){...}

    super.func() / this.func()  



    //泛型函数
    定义:
    T getInfo<T>(T str){
      return str;
    }
    运行:
    print(getInfo<String>('123'));


    //泛型类
    定义:
    class Data<T>{
      List l = new List<T>();
      add(T data){
        this.l.add(data);
      }

      printData(){
        this.l.forEach((value) {
          print(value);
        });
      }
    }

    运行:
    Data l = new Data<String>();
    l.add('a');
    l.add('b');
    l.printData();


    学习中记录这个只是为了忘记的时候方便查询!


    温馨提示:
    1、本站所有内容均为互联网收集或网友分享或网络购买,本站不破解、不翻录任何视频!
    2、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意!
    3、本站资源仅供本站会员学习参考,不得传播及用于其他用途,学习完后请在24小时内自行删除.
    4、本站资源质量虽均经精心审查,但也难保万无一失,若发现资源有问题影响学习请一定及时点此进行问题反馈,我们会第一时间改正!
    5、若发现链接失效了请联系管理员,管理员会在2小时内修复
    6、如果有任何疑问,请加客服QQ:1300822626 2小时内回复你!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 145 天

    [LV.7]常住居民III

    1

    主题

    322

    帖子

    1086

    积分

    技冠群雄

    Rank: 6Rank: 6

    积分
    1086

    发表于 2023-8-24 13:58:27 | 显示全部楼层
    感谢楼主分享知识!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|本站代理|dmz社区

    GMT+8, 2024-4-19 14:20 , Processed in 0.128566 second(s), 35 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表