了解抖动语法

时间:2019-05-22 13:25:49

标签: dart flutter

我正在查看某人的颤动代码,其中有些代码我不知道它在做什么。

我不了解某些语法,因为从未用其他任何语言看到过它。

这是三个例子...

1.  final Geolocator geolocator = Geolocator()
    ..forceAndroidLocationManager = true;

2.  final firstName = appState?.user?.firstName ?? '';

3.  var envelope = new Envelope()
    ..from = 'support@example.com'
    ..recipients.add(Globals.sosEmail)
    ..ccRecipients.add(email)
    ..subject = '$firstName $lastName hello. ${new DateTime.now()}'
    ..text = "Hello"'
    ..html ='<p>Hey!</p>';

(2)在做什么? ?.?? ''是什么意思?

有些语法中连续有两个点,例如(1)..forceAndroidLocationManager..from..text等。

任何人都知道上面3个代码示例的作用吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

第一个示例是cascade notation 这意味着您可以对同一个对象执行多项操作。 dart网站上的示例:

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

第二个示例是关于null-aware operators

final firstName = appState?.user?.firstName ?? '';

这里发生的事情是我们有一个名为appState的变量,而appState?.user意味着我们仅应在appState不为null的情况下尝试访问user(因此我们不会不会出现空指针错误。user?.firstname也是如此。

最后,??的意思是将'firstName'设置为appState.user.firstName(如果不为null),否则将其设置为'。

第三个示例与第一个示例相同。