[跨平台] Flutte<span class=android/harmonyosr开发之——路由堆栈” src=”handroid/harmonyosttps://www.6hu.cc/files/2022/06/acf9fcd1251f6448a3d77980baea3885.gif”>

5.3application 返回数据

B 页面返回代码

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pop('从B返回');
  },
)

A页面接收返回的数据

class _MyHomePageState extends State<MyHomePage> {
  String _string = 'A 页面';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RaisedButton(
              child: Text(_string),
              onPressed: () async{
                var result = await Navigator.of(context).pushNamed('/B', arguments: '来自A');
                setState(() {
                  _string = result;
                });
              },
            )
          ],
        ),
      ),
    );
  }
}

效果图(push 相关方法返回 Fuflutter菜鸟教程ture 类型,使用 await 等待返回结果)

[跨平台] Flutter开发之——路由堆栈动画头像oads/2022/06/276677620fb00196c983256d5android手机42a8482.gif”>

最后

在这里我想跟大家说的是,2021年还没上手 Flutter 的移动开发们该appetite看看这份Git高星的286页学习笔记了!早期的鸟儿有虫吃

现在flutter已经不再是当初的那个小众框架了,已经越来越规范,应用越来越广泛,还没有上手的朋友快学起来~

android是什么系统堆栈” alt=”[跨平台] Flutterios15开发之——路由堆栈” sFlutterrc=”https://www.6hu.cc/files/2022/06/de385a91b8409d136f62751ed4e41c0c.gif”>

5.2 通过命名路由设置参数的方式

A 页面传递数据

RaisedButton(
  child: Text('A 页面'),
  onPressed: () {
    Navigator.of(context).pushNamed('/B',arguments: '来自A');
  },
)

B 页面通过 ModalRoute.ofappear(context).settings.argumenios16ts 接收数据:

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pushNamed('/C');
  },
)

效果图

[跨平台] Flutte<span class=android/harmonyosr开发之——路由堆栈” src=”handroid/harmonyosttps://www.6hu.cc/files/2022/06/acf9fcd1251f6448a3d77980baea3885.gif”>

5.3application 返回数据

B 页面返回代码

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pop('从B返回');
  },
)

A页面接收返回的数据

class _MyHomePageState extends State<MyHomePage> {
  String _string = 'A 页面';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RaisedButton(
              child: Text(_string),
              onPressed: () async{
                var result = await Navigator.of(context).pushNamed('/B', arguments: '来自A');
                setState(() {
                  _string = result;
                });
              },
            )
          ],
        ),
      ),
    );
  }
}

效果图(push 相关方法返回 Fuflutter菜鸟教程ture 类型,使用 await 等待返回结果)

[跨平台] Flutter开发之——路由堆栈动画头像oads/2022/06/276677620fb00196c983256d5android手机42a8482.gif”>

最后

在这里我想跟大家说的是,2021年还没上手 Flutter 的移动开发们该appetite看看这份Git高星的286页学习笔记了!早期的鸟儿有虫吃

现在flutter已经不再是当初的那个小众框架了,已经越来越规范,应用越来越广泛,还没有上手的朋友快学起来~

ios模拟器tter开发之——路由堆栈” alt=”[跨平台] Flutter开发之——路由堆栈” src=”https://android什么意思www.6hu.cc/files/2022/06/208c3ed515349cac6136fbe7c7399e1f.png”>

五、页面跳转及返回时传值

5.1 通过构造函数方式

商品详情页

class ProductDetail extends StatelessWidget {
  final ProductInfo productInfo;
  const ProductDetail({Key key, this.productInfo}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primarySwatch: Colors.blue),
      home: Scaffold(
        body: Container(
          alignment: Alignment.center,
          child: Text("ProductDetail:${productInfo.name}"),
        ),
      ),
    );
  }
}

要传递的值

class ProductInfo {
  var name;
  ProductInfo(this.name);
}

跳转代码

Navigator.of(context).push(MaterialPageRoute(builder: (context){
                  return ProductDetail(productInfo: ProductInfo("张三"),);
                }));

效果图

android是什么系统堆栈” alt=”[跨平台] Flutterios15开发之——路由堆栈” sFlutterrc=”https://www.6hu.cc/files/2022/06/de385a91b8409d136f62751ed4e41c0c.gif”>

5.2 通过命名路由设置参数的方式

A 页面传递数据

RaisedButton(
  child: Text('A 页面'),
  onPressed: () {
    Navigator.of(context).pushNamed('/B',arguments: '来自A');
  },
)

B 页面通过 ModalRoute.ofappear(context).settings.argumenios16ts 接收数据:

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pushNamed('/C');
  },
)

效果图

[跨平台] Flutte<span class=android/harmonyosr开发之——路由堆栈” src=”handroid/harmonyosttps://www.6hu.cc/files/2022/06/acf9fcd1251f6448a3d77980baea3885.gif”>

5.3application 返回数据

B 页面返回代码

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pop('从B返回');
  },
)

A页面接收返回的数据

class _MyHomePageState extends State<MyHomePage> {
  String _string = 'A 页面';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RaisedButton(
              child: Text(_string),
              onPressed: () async{
                var result = await Navigator.of(context).pushNamed('/B', arguments: '来自A');
                setState(() {
                  _string = result;
                });
              },
            )
          ],
        ),
      ),
    );
  }
}

效果图(push 相关方法返回 Fuflutter菜鸟教程ture 类型,使用 await 等待返回结果)

[跨平台] Flutter开发之——路由堆栈动画头像oads/2022/06/276677620fb00196c983256d5android手机42a8482.gif”>

最后

在这里我想跟大家说的是,2021年还没上手 Flutter 的移动开发们该appetite看看这份Git高星的286页学习笔记了!早期的鸟儿有虫吃

现在flutter已经不再是当初的那个小众框架了,已经越来越规范,应用越来越广泛,还没有上手的朋友快学起来~

[跨平台] Flutter开发之——路由堆栈fluttershy732504795aa7ab7d448.gif”>

路由堆栈变化

ios模拟器tter开发之——路由堆栈” alt=”[跨平台] Flutter开发之——路由堆栈” src=”https://android什么意思www.6hu.cc/files/2022/06/208c3ed515349cac6136fbe7c7399e1f.png”>

五、页面跳转及返回时传值

5.1 通过构造函数方式

商品详情页

class ProductDetail extends StatelessWidget {
  final ProductInfo productInfo;
  const ProductDetail({Key key, this.productInfo}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primarySwatch: Colors.blue),
      home: Scaffold(
        body: Container(
          alignment: Alignment.center,
          child: Text("ProductDetail:${productInfo.name}"),
        ),
      ),
    );
  }
}

要传递的值

class ProductInfo {
  var name;
  ProductInfo(this.name);
}

跳转代码

Navigator.of(context).push(MaterialPageRoute(builder: (context){
                  return ProductDetail(productInfo: ProductInfo("张三"),);
                }));

效果图

android是什么系统堆栈” alt=”[跨平台] Flutterios15开发之——路由堆栈” sFlutterrc=”https://www.6hu.cc/files/2022/06/de385a91b8409d136f62751ed4e41c0c.gif”>

5.2 通过命名路由设置参数的方式

A 页面传递数据

RaisedButton(
  child: Text('A 页面'),
  onPressed: () {
    Navigator.of(context).pushNamed('/B',arguments: '来自A');
  },
)

B 页面通过 ModalRoute.ofappear(context).settings.argumenios16ts 接收数据:

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pushNamed('/C');
  },
)

效果图

[跨平台] Flutte<span class=android/harmonyosr开发之——路由堆栈” src=”handroid/harmonyosttps://www.6hu.cc/files/2022/06/acf9fcd1251f6448a3d77980baea3885.gif”>

5.3application 返回数据

B 页面返回代码

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pop('从B返回');
  },
)

A页面接收返回的数据

class _MyHomePageState extends State<MyHomePage> {
  String _string = 'A 页面';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RaisedButton(
              child: Text(_string),
              onPressed: () async{
                var result = await Navigator.of(context).pushNamed('/B', arguments: '来自A');
                setState(() {
                  _string = result;
                });
              },
            )
          ],
        ),
      ),
    );
  }
}

效果图(push 相关方法返回 Fuflutter菜鸟教程ture 类型,使用 await 等待返回结果)

[跨平台] Flutter开发之——路由堆栈动画头像oads/2022/06/276677620fb00196c983256d5android手机42a8482.gif”>

最后

在这里我想跟大家说的是,2021年还没上手 Flutter 的移动开发们该appetite看看这份Git高星的286页学习笔记了!早期的鸟儿有虫吃

现在flutter已经不再是当初的那个小众框架了,已经越来越规范,应用越来越广泛,还没有上手的朋友快学起来~

动画制作软件utter开发之动画电影——路由堆栈” alt=”[跨平台] Flutter开发之——路由堆栈” src=”https://www.6hu.cc/wpios15-content/uploads/2022/06/83601b6f349a389700b3126ed846f1a9动画头像.png”>

4.2.5 popUntil

有A、B、C、D 四个页面,D 页面通过 popUntil 一直返回到 A 页面,D 页面代码:

RaisedButton(
  child: Text('D 页面'),
  onPressed: () {
    Navigator.of(context).popUntil(ModalRoute.withName('/A'));
  },
)

效果动画电影

[跨平台] Flutter开发之——路由堆栈fluttershy732504795aa7ab7d448.gif”>

路由堆栈变化

ios模拟器tter开发之——路由堆栈” alt=”[跨平台] Flutter开发之——路由堆栈” src=”https://android什么意思www.6hu.cc/files/2022/06/208c3ed515349cac6136fbe7c7399e1f.png”>

五、页面跳转及返回时传值

5.1 通过构造函数方式

商品详情页

class ProductDetail extends StatelessWidget {
  final ProductInfo productInfo;
  const ProductDetail({Key key, this.productInfo}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primarySwatch: Colors.blue),
      home: Scaffold(
        body: Container(
          alignment: Alignment.center,
          child: Text("ProductDetail:${productInfo.name}"),
        ),
      ),
    );
  }
}

要传递的值

class ProductInfo {
  var name;
  ProductInfo(this.name);
}

跳转代码

Navigator.of(context).push(MaterialPageRoute(builder: (context){
                  return ProductDetail(productInfo: ProductInfo("张三"),);
                }));

效果图

android是什么系统堆栈” alt=”[跨平台] Flutterios15开发之——路由堆栈” sFlutterrc=”https://www.6hu.cc/files/2022/06/de385a91b8409d136f62751ed4e41c0c.gif”>

5.2 通过命名路由设置参数的方式

A 页面传递数据

RaisedButton(
  child: Text('A 页面'),
  onPressed: () {
    Navigator.of(context).pushNamed('/B',arguments: '来自A');
  },
)

B 页面通过 ModalRoute.ofappear(context).settings.argumenios16ts 接收数据:

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pushNamed('/C');
  },
)

效果图

[跨平台] Flutte<span class=android/harmonyosr开发之——路由堆栈” src=”handroid/harmonyosttps://www.6hu.cc/files/2022/06/acf9fcd1251f6448a3d77980baea3885.gif”>

5.3application 返回数据

B 页面返回代码

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pop('从B返回');
  },
)

A页面接收返回的数据

class _MyHomePageState extends State<MyHomePage> {
  String _string = 'A 页面';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RaisedButton(
              child: Text(_string),
              onPressed: () async{
                var result = await Navigator.of(context).pushNamed('/B', arguments: '来自A');
                setState(() {
                  _string = result;
                });
              },
            )
          ],
        ),
      ),
    );
  }
}

效果图(push 相关方法返回 Fuflutter菜鸟教程ture 类型,使用 await 等待返回结果)

[跨平台] Flutter开发之——路由堆栈动画头像oads/2022/06/276677620fb00196c983256d5android手机42a8482.gif”>

最后

在这里我想跟大家说的是,2021年还没上手 Flutter 的移动开发们该appetite看看这份Git高星的286页学习笔记了!早期的鸟儿有虫吃

现在flutter已经不再是当初的那个小众框架了,已经越来越规范,应用越来越广泛,还没有上手的朋友快学起来~

android什么意思w.6hios下载u.cc/wp-content/uploads/2022/06/d49b46571943f3e076f40de97d208354.gif”>

从 C 页面跳转到 D 页面路由堆栈变化

动画制作软件utter开发之动画电影——路由堆栈” alt=”[跨平台] Flutter开发之——路由堆栈” src=”https://www.6hu.cc/wpios15-content/uploads/2022/06/83601b6f349a389700b3126ed846f1a9动画头像.png”>

4.2.5 popUntil

有A、B、C、D 四个页面,D 页面通过 popUntil 一直返回到 A 页面,D 页面代码:

RaisedButton(
  child: Text('D 页面'),
  onPressed: () {
    Navigator.of(context).popUntil(ModalRoute.withName('/A'));
  },
)

效果动画电影

[跨平台] Flutter开发之——路由堆栈fluttershy732504795aa7ab7d448.gif”>

路由堆栈变化

ios模拟器tter开发之——路由堆栈” alt=”[跨平台] Flutter开发之——路由堆栈” src=”https://android什么意思www.6hu.cc/files/2022/06/208c3ed515349cac6136fbe7c7399e1f.png”>

五、页面跳转及返回时传值

5.1 通过构造函数方式

商品详情页

class ProductDetail extends StatelessWidget {
  final ProductInfo productInfo;
  const ProductDetail({Key key, this.productInfo}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primarySwatch: Colors.blue),
      home: Scaffold(
        body: Container(
          alignment: Alignment.center,
          child: Text("ProductDetail:${productInfo.name}"),
        ),
      ),
    );
  }
}

要传递的值

class ProductInfo {
  var name;
  ProductInfo(this.name);
}

跳转代码

Navigator.of(context).push(MaterialPageRoute(builder: (context){
                  return ProductDetail(productInfo: ProductInfo("张三"),);
                }));

效果图

android是什么系统堆栈” alt=”[跨平台] Flutterios15开发之——路由堆栈” sFlutterrc=”https://www.6hu.cc/files/2022/06/de385a91b8409d136f62751ed4e41c0c.gif”>

5.2 通过命名路由设置参数的方式

A 页面传递数据

RaisedButton(
  child: Text('A 页面'),
  onPressed: () {
    Navigator.of(context).pushNamed('/B',arguments: '来自A');
  },
)

B 页面通过 ModalRoute.ofappear(context).settings.argumenios16ts 接收数据:

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pushNamed('/C');
  },
)

效果图

[跨平台] Flutte<span class=android/harmonyosr开发之——路由堆栈” src=”handroid/harmonyosttps://www.6hu.cc/files/2022/06/acf9fcd1251f6448a3d77980baea3885.gif”>

5.3application 返回数据

B 页面返回代码

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pop('从B返回');
  },
)

A页面接收返回的数据

class _MyHomePageState extends State<MyHomePage> {
  String _string = 'A 页面';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RaisedButton(
              child: Text(_string),
              onPressed: () async{
                var result = await Navigator.of(context).pushNamed('/B', arguments: '来自A');
                setState(() {
                  _string = result;
                });
              },
            )
          ],
        ),
      ),
    );
  }
}

效果图(push 相关方法返回 Fuflutter菜鸟教程ture 类型,使用 await 等待返回结果)

[跨平台] Flutter开发之——路由堆栈动画头像oads/2022/06/276677620fb00196c983256d5android手机42a8482.gif”>

最后

在这里我想跟大家说的是,2021年还没上手 Flutter 的移动开发们该appetite看看这份Git高星的286页学习笔记了!早期的鸟儿有虫吃

现在flutter已经不再是当初的那个小众框架了,已经越来越规范,应用越来越广泛,还没有上手的朋友快学起来~

[跨平台] Flut<span class=androidstudio安装教程ter开发之——路appointment由堆栈” srcandroid是什么系统=”https://www.6hu.cc/files/2022/06/b93915eeeb3111c3686d2b94fd7android是什么手机牌子6006f.png”>

4.2.3 popios应用商店AndPushNamed

B 页面跳转到 C 页面,使用android/harmonyos popAndPushNamed

RaisedButton(
  child: Text('B 页面'),
  onPressed: () {
      Navigator.of(context).popAndPushNamed('/C');
  },
)

pandroid是什么系统opAndPushNamedflutter是什么意思和pushReplacem动画大放映eapproventNamed的区别

  • popAndPushNameandroid平板电脑价格d 路由堆栈android手机和 pushReplacementNamed 是一样,唯一的区别就是
  • poios模拟器pAndPushNamed 有 B 页面退出动画

4.2.4flutter开发的app有哪些 pushNamedAndRemoveUntil

应用场景

有如下场景,flutter菜鸟教程应用程序进入首页,点击登录进入appointment登录页面,然后进入注册页面或者忘记密码页面appointment…,登录成功后进入其他页动画大放映面,此时不希望返回到登录apple相关页面,此场景可以使用

有A、B、C、D 四个页面,A 通过push进入 B 页面,B 通过push进入 C 页面,C 通过 pushNameappointmentdAndRemoveUntil 进入 D 页面appstore同时删除路由堆栈中直到 /Bios系统 的路由,C 页面代码

RaisedButton(
  child: Text('C 页面'),
  onPressed: () {
    Navigator.of(context).pushNamedAndRemoveUntil('/D', ModalRoute.withName('/B'));
  },
),

D 页面按钮执行appointment pop

RaisedButton(
  child: Text('D 页面'),
  onPressed: () {
    Navigator.of(context).pop();
  },
)

效果图

android什么意思w.6hios下载u.cc/wp-content/uploads/2022/06/d49b46571943f3e076f40de97d208354.gif”>

从 C 页面跳转到 D 页面路由堆栈变化

动画制作软件utter开发之动画电影——路由堆栈” alt=”[跨平台] Flutter开发之——路由堆栈” src=”https://www.6hu.cc/wpios15-content/uploads/2022/06/83601b6f349a389700b3126ed846f1a9动画头像.png”>

4.2.5 popUntil

有A、B、C、D 四个页面,D 页面通过 popUntil 一直返回到 A 页面,D 页面代码:

RaisedButton(
  child: Text('D 页面'),
  onPressed: () {
    Navigator.of(context).popUntil(ModalRoute.withName('/A'));
  },
)

效果动画电影

[跨平台] Flutter开发之——路由堆栈fluttershy732504795aa7ab7d448.gif”>

路由堆栈变化

ios模拟器tter开发之——路由堆栈” alt=”[跨平台] Flutter开发之——路由堆栈” src=”https://android什么意思www.6hu.cc/files/2022/06/208c3ed515349cac6136fbe7c7399e1f.png”>

五、页面跳转及返回时传值

5.1 通过构造函数方式

商品详情页

class ProductDetail extends StatelessWidget {
  final ProductInfo productInfo;
  const ProductDetail({Key key, this.productInfo}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primarySwatch: Colors.blue),
      home: Scaffold(
        body: Container(
          alignment: Alignment.center,
          child: Text("ProductDetail:${productInfo.name}"),
        ),
      ),
    );
  }
}

要传递的值

class ProductInfo {
  var name;
  ProductInfo(this.name);
}

跳转代码

Navigator.of(context).push(MaterialPageRoute(builder: (context){
                  return ProductDetail(productInfo: ProductInfo("张三"),);
                }));

效果图

android是什么系统堆栈” alt=”[跨平台] Flutterios15开发之——路由堆栈” sFlutterrc=”https://www.6hu.cc/files/2022/06/de385a91b8409d136f62751ed4e41c0c.gif”>

5.2 通过命名路由设置参数的方式

A 页面传递数据

RaisedButton(
  child: Text('A 页面'),
  onPressed: () {
    Navigator.of(context).pushNamed('/B',arguments: '来自A');
  },
)

B 页面通过 ModalRoute.ofappear(context).settings.argumenios16ts 接收数据:

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pushNamed('/C');
  },
)

效果图

[跨平台] Flutte<span class=android/harmonyosr开发之——路由堆栈” src=”handroid/harmonyosttps://www.6hu.cc/files/2022/06/acf9fcd1251f6448a3d77980baea3885.gif”>

5.3application 返回数据

B 页面返回代码

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pop('从B返回');
  },
)

A页面接收返回的数据

class _MyHomePageState extends State<MyHomePage> {
  String _string = 'A 页面';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RaisedButton(
              child: Text(_string),
              onPressed: () async{
                var result = await Navigator.of(context).pushNamed('/B', arguments: '来自A');
                setState(() {
                  _string = result;
                });
              },
            )
          ],
        ),
      ),
    );
  }
}

效果图(push 相关方法返回 Fuflutter菜鸟教程ture 类型,使用 await 等待返回结果)

[跨平台] Flutter开发之——路由堆栈动画头像oads/2022/06/276677620fb00196c983256d5android手机42a8482.gif”>

最后

在这里我想跟大家说的是,2021年还没上手 Flutter 的移动开发们该appetite看看这份Git高星的286页学习笔记了!早期的鸟儿有虫吃

现在flutter已经不再是当初的那个小众框架了,已经越来越规范,应用越来越广泛,还没有上手的朋友快学起来~

[跨平台] Flutter开发之——路由堆栈ios越狱s://wwios模拟器w.6hu.cc/files/2022/06/9de83a7e3bb505da3cebba9bb471f1b6.gif”>

堆栈变化

点击 C 页面按钮直接返回到了 Aandroid手机 页面,而不是 B 页面,因为 B 页面使用 pushReplacementNamed 跳转,路由堆栈变化

[跨平台] Flut<span class=androidstudio安装教程ter开发之——路appointment由堆栈” srcandroid是什么系统=”https://www.6hu.cc/files/2022/06/b93915eeeb3111c3686d2b94fd7android是什么手机牌子6006f.png”>

4.2.3 popios应用商店AndPushNamed

B 页面跳转到 C 页面,使用android/harmonyos popAndPushNamed

RaisedButton(
  child: Text('B 页面'),
  onPressed: () {
      Navigator.of(context).popAndPushNamed('/C');
  },
)

pandroid是什么系统opAndPushNamedflutter是什么意思和pushReplacem动画大放映eapproventNamed的区别

  • popAndPushNameandroid平板电脑价格d 路由堆栈android手机和 pushReplacementNamed 是一样,唯一的区别就是
  • poios模拟器pAndPushNamed 有 B 页面退出动画

4.2.4flutter开发的app有哪些 pushNamedAndRemoveUntil

应用场景

有如下场景,flutter菜鸟教程应用程序进入首页,点击登录进入appointment登录页面,然后进入注册页面或者忘记密码页面appointment…,登录成功后进入其他页动画大放映面,此时不希望返回到登录apple相关页面,此场景可以使用

有A、B、C、D 四个页面,A 通过push进入 B 页面,B 通过push进入 C 页面,C 通过 pushNameappointmentdAndRemoveUntil 进入 D 页面appstore同时删除路由堆栈中直到 /Bios系统 的路由,C 页面代码

RaisedButton(
  child: Text('C 页面'),
  onPressed: () {
    Navigator.of(context).pushNamedAndRemoveUntil('/D', ModalRoute.withName('/B'));
  },
),

D 页面按钮执行appointment pop

RaisedButton(
  child: Text('D 页面'),
  onPressed: () {
    Navigator.of(context).pop();
  },
)

效果图

android什么意思w.6hios下载u.cc/wp-content/uploads/2022/06/d49b46571943f3e076f40de97d208354.gif”>

从 C 页面跳转到 D 页面路由堆栈变化

动画制作软件utter开发之动画电影——路由堆栈” alt=”[跨平台] Flutter开发之——路由堆栈” src=”https://www.6hu.cc/wpios15-content/uploads/2022/06/83601b6f349a389700b3126ed846f1a9动画头像.png”>

4.2.5 popUntil

有A、B、C、D 四个页面,D 页面通过 popUntil 一直返回到 A 页面,D 页面代码:

RaisedButton(
  child: Text('D 页面'),
  onPressed: () {
    Navigator.of(context).popUntil(ModalRoute.withName('/A'));
  },
)

效果动画电影

[跨平台] Flutter开发之——路由堆栈fluttershy732504795aa7ab7d448.gif”>

路由堆栈变化

ios模拟器tter开发之——路由堆栈” alt=”[跨平台] Flutter开发之——路由堆栈” src=”https://android什么意思www.6hu.cc/files/2022/06/208c3ed515349cac6136fbe7c7399e1f.png”>

五、页面跳转及返回时传值

5.1 通过构造函数方式

商品详情页

class ProductDetail extends StatelessWidget {
  final ProductInfo productInfo;
  const ProductDetail({Key key, this.productInfo}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primarySwatch: Colors.blue),
      home: Scaffold(
        body: Container(
          alignment: Alignment.center,
          child: Text("ProductDetail:${productInfo.name}"),
        ),
      ),
    );
  }
}

要传递的值

class ProductInfo {
  var name;
  ProductInfo(this.name);
}

跳转代码

Navigator.of(context).push(MaterialPageRoute(builder: (context){
                  return ProductDetail(productInfo: ProductInfo("张三"),);
                }));

效果图

android是什么系统堆栈” alt=”[跨平台] Flutterios15开发之——路由堆栈” sFlutterrc=”https://www.6hu.cc/files/2022/06/de385a91b8409d136f62751ed4e41c0c.gif”>

5.2 通过命名路由设置参数的方式

A 页面传递数据

RaisedButton(
  child: Text('A 页面'),
  onPressed: () {
    Navigator.of(context).pushNamed('/B',arguments: '来自A');
  },
)

B 页面通过 ModalRoute.ofappear(context).settings.argumenios16ts 接收数据:

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pushNamed('/C');
  },
)

效果图

[跨平台] Flutte<span class=android/harmonyosr开发之——路由堆栈” src=”handroid/harmonyosttps://www.6hu.cc/files/2022/06/acf9fcd1251f6448a3d77980baea3885.gif”>

5.3application 返回数据

B 页面返回代码

RaisedButton(
  child: Text('${ModalRoute.of(context).settings.arguments}'),
  onPressed: () {
    Navigator.of(context).pop('从B返回');
  },
)

A页面接收返回的数据

class _MyHomePageState extends State<MyHomePage> {
  String _string = 'A 页面';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RaisedButton(
              child: Text(_string),
              onPressed: () async{
                var result = await Navigator.of(context).pushNamed('/B', arguments: '来自A');
                setState(() {
                  _string = result;
                });
              },
            )
          ],
        ),
      ),
    );
  }
}

效果图(push 相关方法返回 Fuflutter菜鸟教程ture 类型,使用 await 等待返回结果)

[跨平台] Flutter开发之——路由堆栈动画头像oads/2022/06/276677620fb00196c983256d5android手机42a8482.gif”>

最后

在这里我想跟大家说的是,2021年还没上手 Flutter 的移动开发们该appetite看看这份Git高星的286页学习笔记了!早期的鸟儿有虫吃

现在flutter已经不再是当初的那个小众框架了,已经越来越规范,应用越来越广泛,还没有上手的朋友快学起来~