我正在查看某人的波动代码,并且其中有些代码我不明白它在做什么。
我不理解其中的某些语法,因为从未用其他任何语言看到过该语法。
这是三个例子...
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个代码示例的作用吗?
谢谢!
最佳答案
第一个示例是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
(因此我们不会出现nullpointer指针错误。user?.firstname
也是一样。最后,
??
的意思是将'firstName'设置为appState.user.firstName,如果不为null,则将其设置为'。第三个示例与第一个示例相同。
关于dart - 了解抖动语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56257955/