如何在Flutter中传递参数,如果用户使用箭头返回?

16 浏览
0 Comments

如何在Flutter中传递参数,如果用户使用箭头返回?

如果你有一个raiseButton,可以通过Navigation.... .pop(value)来实现。但是,如果用户返回并且我想更新这个值会发生什么,因为结果将为null。

0
0 Comments

在Flutter中,当用户使用返回箭头返回上一页时,如果需要传递参数,可以通过覆盖返回按钮的行为来实现。可以使用WillPopScope小部件来实现此功能。以下是解决方法的代码示例:

import 'package:flutter/material.dart';

void main() async {

runApp(MyApp());

}

class MyApp extends StatelessWidget {

Widget build(BuildContext context) {

return MaterialApp(

title: 'Flutter Demo',

home: Navigator(

onGenerateRoute: (settings) => MaterialPageRoute(

builder: (context) => MyHomePage(),

),

),

);

}

}

class MyHomePage extends StatefulWidget {

MyHomePage({Key key}) : super(key: key);

_MyHomePageState createState() => _MyHomePageState();

}

class _MyHomePageState extends State {

void _onButtonPressed() {

Navigator.of(context)

.push(MaterialPageRoute(builder: (context) => OtherPage()))

.then((value) {

print("returned: $value");

if (value != null) {

setState(() {

// ...

});

}

});

}

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(title: Text("Demo")),

body: Center(

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: [

RaisedButton(

child: Text("Open another screen"),

onPressed: _onButtonPressed),

],

),

),

);

}

}

class OtherPage extends StatelessWidget {

OtherPage({Key key}) : super(key: key);

Widget build(BuildContext context) {

return WillPopScope(

onWillPop: () async {

// 在这里可以返回任何你需要的内容...

Navigator.of(context).pop("my value");

// 取消默认行为

return false;

},

child: Scaffold(

appBar: AppBar(title: Text("Other page")),

body: Center(

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: [

Text('Click on return button'),

],

),

),

),

);

}

}

在上述代码中,通过在OtherPage小部件中使用WillPopScope,并在其onWillPop回调中使用Navigator.of(context).pop()来手动返回上一页并传递参数。这样,当用户点击返回箭头时,将执行onWillPop回调,并返回指定的参数值。

0
0 Comments

当用户使用箭头返回时,Flutter 如何传递参数?

在 Flutter 中,当用户使用箭头返回时,可以通过以下方法传递参数:

1. 首先,需要定义一个变量来存储返回的数据。例如,可以创建一个名为 "result" 的变量。

final result = await Navigator.push(

context,

MaterialPageRoute(

builder: (context) => SelectionScreen(),

),

);

2. 使用 Navigator.push 方法将数据传递给下一个屏幕。在这个例子中,我们将数据传递给名为 SelectionScreen 的屏幕。

3. 在 SelectionScreen 屏幕中,可以通过 Navigator.pop 方法返回数据给上一个屏幕。

Navigator.pop(context, selectedData);

4. 回到上一个屏幕后,可以通过 result 变量来获取传递的数据。

这样,当用户使用箭头返回到上一个屏幕时,就可以传递参数并获取返回的数据了。

更多详细信息,请查看 Flutter 文档中的 文档

0