美文网首页
Flutter实例解析

Flutter实例解析

作者: 虫yu | 来源:发表于2020-05-25 18:09 被阅读0次
    Point(num x, num y) {
        // There's a better way to do this, stay tuned.
        this.x = x;
        this.y = y;
     }
    

    语法糖:

    Point(this.x, this.y);
    

    同理:

    class MyHomePage extends StatefulWidget {
      MyHomePage({Key key, this.title}) : super(key: key);
     
      final String title;
    
      @override
      // _MyHomePageState类是MyHomePage类对应的状态类
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    MyHomePage({Key key, this.title}) : super(key: key);
    

    前半句是一个语法糖:

    MyHomePage({Key key, this.title})
    

    原本应该类似包含:

    MyHomePage({Key key, String title}) {
        this.title = title;
    }
    

    调用超类构造函数:

    : super(key: key)
    

    实际这个构造方法很长。

    附注:

    可选参数也分为两类:

    • 可选命名参数:使用 {} 包起来的参数是可选命名参数
      ** 可选命名参数:{} 使用 {} 来赋值的数据类型是 Map,所以可选的命名参数的类型也是 Map, 因此调用函数时,可选参数的赋值必须是 paramName: value 这种 key: value 格式的,例如:
    // 声明和实现
    bool say(String msg , {String from, int clock}){
        print(msg+" from " + from + " at " + clock.toString());
        return true;
    }
    // 调用
    say('Hello Flutter',clock: 11);
    say('Hello Flutter',from: 'XiaoMing',clock: 11);
    
    • 可选位置参数:使用 [] 包起来的参数是可选位置参数
      ** 用 [] 包起来的参数是可选位置参数,前面讲数据类型的时候,使用 [] 来赋值的数据类型是 List,所以可选的命名参数的类型也是 List,所以赋值和参数是一一对应的,下面是可选位置参数的例子:
    // 声明和实现
    bool say(String msg , [String from , int clock]){
        print(msg+" from " + from + " at " + clock.toString());
        return true;
    }
    // 调用
    say('Hello Flutter','XiaoMing')//✅
    say('Hello Flutter',1)//❌ 因为  1 赋值给了 from,但是 from 是String,所以会报错
    

    推荐阅读:

    【开发经验】Flutter避免代码嵌套,写好build方法

    相关文章

      网友评论

          本文标题:Flutter实例解析

          本文链接:https://www.haomeiwen.com/subject/ntquahtx.html