相关疑难解决方法(0)

如何使用 Navigator.popUntil Flutter

我正在做一个 Flutter 应用程序,我想从第 4 页返回到第 1 页。我有一个非常奇怪的错误:

坏状态:未来已经完成

我创建了一个简单的项目来重现这个错误:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      onGenerateRoute: routes,
    );
  }
}

Route routes(RouteSettings settings) {
  if (settings.name == '/page1') {
    return MaterialPageRoute(
      builder: (context) {
        return Page1();
      },
    );
  } else if (settings.name == '/page2') {
    return MaterialPageRoute(
      builder: (context) {
        return Page2();
      },
    );
  } else …
Run Code Online (Sandbox Code Playgroud)

flutter

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

使用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
查看次数

标签 统计

flutter ×2

dart ×1