我们在上一章回中介绍了数据共享总结相关的内容,本章回中将介绍" 在页面之间传递数据的一种方法".闲话休提,让我们一起Talk Flutter吧。
知识回顾
在程序中经常需要在页面之间传递数据,我们在第十四章回中介绍过如何在页面之间传递数据,当时使用的组件的构造方法来传递数据,如果有看官忘记了,可以点击这里查看以前的内容,本章回中介绍另外一种在页面之间传递数据的方法:使用路由中的参数。
实现方法
我们可以路由提供的pushNamed
()方法在页面之间传递数据,然后在新页面中获取传递来的数据就可以。数据存放于该方法的参数中,该方法提供的参数如下:
- context参数:它是BuildContext类型,主要用来创建路由;
- routeName参数:它是String类型,用来接收命名路由中路由的名称;
- arguments参数:它是Object?类型,而且是可选参数,主要用来传递数据;
在页面之间传递数据时需要使用arguments
参数,如果不需要传递数据,可以不使用该参数,因此该参数定义为可选参数。获取数据使用的是ModalRoute
类,传递来的数据存放于该类的setting参数中,直接获取就可以,不过要注意数据可能为空,而且还需要对数据类型做转换。
示例代码
///通过参数来传递数据,数据类型是Object
Navigator.pushNamed(context, 'SecondRouter',arguments: 'data from arguments');
class SecondRouter extends StatelessWidget {
const SecondRouter({Key? key,required this.data}) : super(key: key);
final String data;
Widget build(BuildContext context) {
// TODO: implement build
///读取命名路由传递的参数并且通过Text显示出来
String? arguments = ModalRoute.of(context)?.settings.arguments?.toString();
}
}
上面的代码中通过路由的参数传递String类型的数据给SecondRouter
这个页面,在该页面中通过ModalRouter类获取到了路由参数传递来的数据。这里只列出了核心代码,完整的代码可以在Github上的main.dart和ex006XXX文件中查看。
看官们,关于"在页面之间传递数据的一种方法"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!