用户在这个日期选择器上选择了一个日期,按了 ok,会返回一个 Future 类型的值,Future 跟 JavaScript 里的 Promise 差不多 .. 用户如果按的是 cancel,日期选择器会返回 null ..
我们可以把 showDatePicker 返回的值起个名字 .. final .. 需要的类型是 DateTime .. 名字是 date ..
编辑器会提示我们说,showDatePicker 返回的 Future 类型的值不能交给 DateTime 类型的变量 .. 这里我们可以先去导入一个包 .. 需要用的是 dart:async ..
然后把这个 _selectDate 这个方法标记成一个 async 方法 .. 在这个 showDatePicker 的前面,用一个 await .. 等待处理好数据以后,再把处理好的数据交给这个 date ..
下面再判断一下 .. 如果 date 的值是 null 的话 .. 我们可以直接 return ... 如果不是 null ,就说明用户确定选择了某个日期 ..
这样我们就可以用一下 setState .. 去把 selectedDate 的值设置成 date .. 这里会提示说不能设置 selectedDate 的值,因为它用了 final ,也就是一但分配了值以后就不能再改变了 ..
去掉定义它的时候前面用的这个 final ..
下面再到模拟器上试一下 ...
先确定一下 ... 重新再打开日期选择器 ..
然后选择一个年份 .. 设置一下月份 .. 再找个好日子 ... 按一下 ok ..
现在界面上显示的日期,就会是我们通过日期选择器选择的 ..
再打开日期选择器 .. 用户如果按了 cancel ... 界面上显示的仍然会是之前的日期 ..