如果代码里面有些动作需要等一会儿才能完成,比如去请求一些外部的接口,读取文件里的内容等等。一般我们不会一直让程序等待执行的结果,而是让它返回一个 Future,等任务执行完成以后再返回一个值。这个就是异步编程。 asynchronous Programming .. 在 Dart 里面实现异步程序,可以使用 Future 接口,或者 async,await ...
前面,我们用了一下 Flutter 里的 showDatePicker 还有 showTimePicker .. 这两个函数都会给我们返回一个 Future ..
如果方法里面包含一些异步的动作,这里就是选择日期或者选择时间 .. 我们需要把这个方法标记成一个异步的方法 .. 就是使用 async 去标记一下 ..
然后在方法里面... 执行的那个异步的动作的前面可以加上一个 await .. 这样我们就可以等待这个异步动作的执行的结果 .. 然后可以把这个异步交给一个变量 .. 这样在方法的其它的地方就可以使用异步动作返回的那个值了 ..
Dart 看到 _selectDate 是一个 async 方法 .. 当它执行到第一个 await 的时候 .. 就会把它加到处理队列里面 .. 然后会返回一个未完成 Future 对象 .. 过一会儿如果异步动作处理完成以后,这个 Future 对象就会带着一个返回的值 .. 如果处理失败就会带着错误 ..
在这个 _selectDate 方法的前面,可以使用一个 Future 标记一下 .. 说明这个方法会返回一个 Future .. 这个 Future 后面可以再加上一个在异步动作处理完成以后返回的值的类型 .. 比如 String ... 也可以是 void ,就是不返回值 ..
这里用的这个 Future 是 dart:async 这个包里提供的,所以要在文件的顶部先导入这个包 ..
同样的方法,再标记一下这个 _selectTime 方法,因为它也会返回 Future ...