zoukankan      html  css  js  c++  java
  • Dart 基本语法

    ??

    // 如果b为null则赋值,否则保持原样
    b ??= value;
    

    级联符号..

    querySelector('#confirm') // Get an object.
        ..text = 'Confirm' // Use its members.
        ..classes.add('important')
        ..onClick.listen((e) => window.alert('Confirmed!'));
       相当于
     var button = querySelector('#confirm');
     button.text = 'Confirm';
     button.classes.add('important');
     button.onClick.listen((e) => window.alert('Confirmed!'));
    

    方法可选参数:
    可选的命名参数, 定义函数时,使用{param1, param2, …},用于指定命名参数。例如:

     //设置[bold]和[hidden]标志
     void enableFlags({bool bold, bool hidden}) {
          // ... 
     }  
     enableFlags(bold: true, hidden: false);
    

    可选的位置参数,用[]它们标记为可选的位置参数:

      String say(String from, String msg, [String device]) {
          var result = '$from says $msg';
          if (device != null) {
             result = '$result with a $device';
          }
          return result;
      }
      say('Bob', 'Howdy'); //结果是: Bob says Howdy
      say('Bob', 'Howdy', 'smoke signal'); //结果是:Bob says Howdy with a smoke signal
    
    

    默认参数
    下面是为命名参数设置默认值的示例:

      // 设置 bold 和 hidden 标记的默认值都为false
      void enableFlags2({bool bold = false, bool hidden = false}) {
           // ...
      }
    
      // 调用的时候:bold will be true; hidden will be false.
      enableFlags2(bold: true);
    

    匿名函数

     var list = ['apples', 'bananas', 'oranges'];
     list.forEach((item) {
        print('${list.indexOf(item)}: $item');
     });
    
    //简写
     list.forEach((item) => print('${list.indexOf(item)}: $item'));
    
    

    字符串转JSON

    var jsonData = JSON.decode('{"x":1, "y":2}');
    

    枚举类型

     enum Color {
        red,
        green,
        blue
     }
    
    

    接口协议implements

    /*
    定义一个DB库 支持 mysql  mssql  mongodb
    mysql  mssql  mongodb三个类里面都有同样的方法
    */
    abstract class Db{   //当做接口   接口:就是约定 、规范
        String uri;      //数据库的链接地址
        add(String data);
        save();
        delete();
    }
    
    class Mysql implements Db{
      @override
      String uri;
      Mysql(this.uri);
    
      @override
      add(data) {
        // TODO: implement add
        print('这是mysql的add方法'+data);
      }
    
      @override
      delete() {
        // TODO: implement delete
        return null;
      }
    
      @override
      save() {
        // TODO: implement save
        return null;
      }
    
      remove(){
      }
    }
    

    多接口

    abstract class A{
      String name;
      printA();
    }
    
    abstract class B{
      printB();
    }
    
    class C implements A,B{  
      @override
      String name;  
      @override
      printA() {
        print('printA');
      }
      @override
      printB() {
        // TODO: implement printB
        return null;
      }
    }
    

    多继承
    mixins的中文意思是混入,就是在类中混入其他功能。
    在Dart中可以使用mixins实现类似多继承的功能

    因为mixins使用的条件,随着Dart版本一直在变,这里讲的是Dart2.x中使用mixins的条件:
    1、作为mixins的类只能继承自Object,不能继承其他类
    2、作为mixins的类不能有构造函数
    3、一个类可以mixins多个mixins类
    4、mixins绝不是继承,也不是接口,而是一种全新的特性

    class A {
      String info="this is A";
      void printA(){
        print("A");
      }
    }
    
    class B {
      void printB(){
        print("B");
      }
    }
    
    class C with A,B{ //具有A类B类所有的方法
    }
    
    void main(){
      var c=new C();  
      c.printA();
      c.printB();
      print(c.info);
    }
    
  • 相关阅读:
    昨天晚上简单英文词典查询及排版系统写完了
    c函数 atoi() 将字符串转换为整型 kbhit() 检测是否有按键按下 区分bioskey()
    写了一个字典树
    用scanf清空缓冲区 对比fflush
    爬取千千小说 -- xpath
    第二十六篇 -- 去掉标题栏并自定义标题栏
    git clone 中途停止不动
    使用turtle库画一朵玫瑰花带文字
    正则爬取我要个性网的头像
    用Pygal画一个英雄能力的图
  • 原文地址:https://www.cnblogs.com/qqcc1388/p/11396362.html
Copyright © 2011-2022 走看看