如何将JSON响应传递给另一个视图

时间:2018-04-09 10:54:44

标签: flutter

我刚刚开始喋喋不休地开始开发我的第一个应用程序,但面临将数据从一个dart文件路由到另一个dart文件的问题。我的代码示例如下所示。

我在main.dart中定义了这样的路由

final routes = <String, WidgetBuilder>{
    Login.tag: (context) => new Login(),
    HomeView.tag: (context) => new HomeView(),
  };

我有两个单独的登录和主页文件

在Login文件中,还定义了标记,并且当用户进行身份验证时,它将导航到HomeView。

// tag defination
static String tag = 'login';


//Navigate on successfull login
Navigator.of(context).pushNamed(HomeView.tag);

那么,我如何将该navigator命令中的userdata传递给使用JSON格式的REST Api进行提取的HomeView。

2 个答案:

答案 0 :(得分:3)

我在我的flutter应用中使用包fluro进行路由。我们可以将JSON数据从一个屏幕传递到另一个屏幕,如下所述

添加依赖项

dev_dependencies:
  fluro: ^1.2.1

定义路由器

Router router = new Router();

定义路线,其中'data'是您要传递的Json字符串

router.define('home/:data', handler: new Handler(
      handlerFunc: (BuildContext context, Map<String, dynamic> params) {
        return new Home(params['data'][0]);
      }));

导航如下

var bodyJson = '{"buyerId":1281,"orgId":3041}';
router.navigateTo(context, '/home/$bodyJson');

您可以在主屏幕中收到Json字符串。

示例项目可用here

答案 1 :(得分:0)

@MuhammadIkhlas Shyju的解决方案应该可以正常工作。因为传入了对象实例,所以得到null。首先将对象转换为字符串。像这样:

var bodyJson = json.encode(yourObject.toJson())
router.navigateTo(context, '/home/$bodyJson')