我正在查看某人的颤动代码,其中有些代码我不知道它在做什么。
我不了解某些语法,因为从未用其他任何语言看到过它。
这是三个例子...
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个代码示例的作用吗? 谢谢!
答案 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),否则将其设置为'。
第三个示例与第一个示例相同。