用户选择了对话框里的某个选项,可以根据用户的选择去做一些事情 ... 选项的值一般是一个 enum 类型的值 .. 在这个类的外面我们可以先去定义一个 enum .. 名字可以随便选,比如我们叫它 Option .. 然后它里面可以添加一个不同的值 .. 添加一个 A, 一个 B ,还有一个 C ..
点按了对话框选项,会执行 onPressed .. 它里面执行了 Navigator.pop .. 这里我们可以让它带一个值 .. 这个值是 Option.A ... 再处理一下第二个选项.. 让它带着 Option.B ... 最后一个是 Option.C ..
这样如果用户按的是 Option.A ,这个 showDialog 最终返回的值就会是 Option.A .. showDialog 是个异步方法,所以它先会返回一个未完成的 Future 对象 ..
所以如果想要得到它真正返回的值,需要在它前面加上一个 await ... 这样我们需要再把这个 _openSimpleDialog 标记成一个 async 方法 .. 它会返回 Future ...
在文件的顶部再去导入一个包 .. dart:async ..
下面再把 showDialog 返回的值交给一个变量 .. final .. 名字是 option ..
这样我们就可以利用这个方法返回的值去做一些事情了 ..
我们可以先在类里面再添加一个 String 类型的值,名字是 _choice .. 先让它等于 Nothing ..
然后再找个地方把它显示出来 .. 添加一个 Text ... 文字是 Your choice is: 后面加上 $_choice ..
再回到 _openSimpleDialog 这个方法 .. 在它里面,可以再用一个 switch .. 把要判断的值交给它 .. 这里就是 option ,也就是 showDialog 方法返回的值 ..
然后添加几种不同的情况 .. 如果 option 的值是 Option.A .. 我们就可以执行一下 setState .. 去把 _choice 的值设置成字符串 A ..
复制两份 .. 再修改一下 .. 条件是 Option.B ... 这样就让 _choice 的值等于 B ... 如果是 Option.C 的话,就让 _choice 等于 C ..
下面再到模拟器上去试一下 .. 现在屏幕上显示的是 Your choice is: Nothing ,因为现在 _choice 的值就是这个 Nothing ..
打开对话框 .. 选择一个选项 ... 比如选择 Option B .. 现在屏幕上会显示 Your choice is: B ..