Dart 语法中两个点..和三个点...的用法

在实际的开发中经常会遇到.....这样的用法,今天分别说一下这两个语法的用法及使用场景.

两个点

..称为级联操作符,可以实现对一个对象的连续调用,然后将原对象返回.

使用场景1:初始化视频控制器
/// 初始化控制器
_controller = VideoPlayerController.network(list[0]['video_url'])
      ///设置视频循环播放
      ..setLooping(true)
      ///设置监听
      ..addListener(() {
        setState(() {
        });
      })
      ///初始化
      ..initialize().then((_) async {
        ///初始化完成更新状态,不然播放器不会播放
        setState(() {
          playOrPauseVideo();
        });
      }).catchError((err) {
        ///播放出错
        print(err);
      });
使用场景2:使用Bloc框架给state里面的属性赋值时
AllOrderState init() {
    return AllOrderState()
      ..allOrderList = allOrderList
      ..isLoadNoData = isLoadNoData;
  }

  AllOrderState clone() {
    return AllOrderState()
      ..allOrderList = allOrderList
      ..isLoadNoData = isLoadNoData;
  }
好处

这样就能省去创建实例对象,然后再依次调用的繁琐,实现链式调用.

三个点

...用来拼接集合,如List,Map等

//这里组合后 list就变成[ 'a', 'b', 'c','d', 'e', 'f']
var list2 = ['d', 'e', 'f'];
var list = ['a', 'b', 'c', ...list2];
//这里组合后map就变成{'a': 'a', 'b': 'b','c': 'c', 'd': 'd'}
var map2 = {'a': 'a', 'b': 'b'};
var map = {...map2, 'c': 'c', 'd': 'd'};
使用场景: Row 或者 Column 拼接数组
    List widgetList = [];
    widgetList.add(const Text('1'));
    widgetList.add(const Text('2'));
    widgetList.add(const Text('3'));
    widgetList.add(const Text('4'));

    return SingleChildScrollView(
      child: Column(
        children: [
          ...widgetList,
          const Text('5')
        ],
      ),
    );

这样就可以把Text('1'), Text('2'), Text('3'), Text('4'), Text('5')很方便的拼接在列表上面了,

好处

数组拼接变得简单

你可能感兴趣的:(Dart 语法中两个点..和三个点...的用法)