小编And*_*rew的帖子

使用Navigator.popUntil和没有固定名称的路由

是否可以将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等).

有没有办法实现这个目标?

dart flutter

5
推荐指数
2
解决办法
2289
查看次数

json.decode 后的空检查

有没有办法快速检查解码的 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 映射对象一起使用?

dart flutter

3
推荐指数
2
解决办法
3906
查看次数

标签 统计

dart ×2

flutter ×2