美文网首页
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