是否可以将Navigator.popUntil与没有固定名称的路由一起使用?
我有一条路线创建方式如下:
final _key_homepage = new GlobalKey<HomePageState>();
Navigator.pushReplacement(context, new MaterialPageRoute(
builder: (BuildContext context) => new HomePage(key: _key_homepage, somevariable1: 'some value', somevariable2: 'some value 2'),
));
Run Code Online (Sandbox Code Playgroud)
现在,当我在任何屏幕上收到推送通知并显示弹出消息时,其中一个按钮应该指向上面列出的路径.该路线已经创建,必须"加油".怎么做?
使用命名路由,可以这样做:
new FlatButton(
child: new Text('Go to homepage'),
onPressed: () {
Navigator.popUntil(context, ModalRoute.withName('/homepage'));
//how to do the same without ModalRoute.withName('/homepage')
},
)
Run Code Online (Sandbox Code Playgroud)
"关键"和所需路线的上下文都可用.然而,再次重新创建路线并不是一个好的解决方案,因为原始路径创建包括一些变量(somevariable1,somevariable2等).
有没有办法实现这个目标?
有没有办法快速检查解码的 JSON 对象中的空条目?
例如:
final responseJson = json.decode(response.body);
Run Code Online (Sandbox Code Playgroud)
这将返回以下内容:
responseJson['result']['mydata']['account'] = 'Joe Doe';
Run Code Online (Sandbox Code Playgroud)
为了检查“mydata”部分是否不为空,我必须执行以下操作:
if(responseJson != null)
{
if(responseJson['result'] != null)
{
if(responseJson['result']['mydata'] != null)
...
Run Code Online (Sandbox Code Playgroud)
这真的很丑。如何做到这一点:
if((responseJson != null) && (responseJson['result'] != null) && (responseJson['result']['mydata'] != null))
{
}
Run Code Online (Sandbox Code Playgroud)
在 Dart 中,如果某些中间项为空(即 ['result']),则会出现异常。
有空感知运算符,例如:
obj?.method()
Run Code Online (Sandbox Code Playgroud)
但是如何将它们与解码的 JSON 映射对象一起使用?