无法使用GetPage读取查询参数- Flutter

ghhaqwfi  于 2023-05-19  发布在  Flutter
关注(0)|答案(2)|浏览(254)

我正在使用getx中的GetMaterialApp.router,因为我曾经使用它来处理应用中的导航,但令人惊讶的是,它没有提供与MaterialApp.router相同的参数集。
不过,我使用getPages添加了路由。我一直在尝试访问Query参数,但它不工作。我可以使用Get.parameters访问Path参数,但对Query参数无效。
这是我的代码,我打算把test1作为查询参数,我得到了null;

GetPage(
          name: '/:session/:test',
          page: () {
            return Scaffold(
              appBar: AppBar(title: Text('${Get.parameters['session']}')),
              body: Column(
                children: [
                  Text('${Get.parameters['test']}'),
                  Text('${Get.parameters['test1']}'),
                ],
              ),
            );
          },
        ),

我尝试使用动态链接打开应用程序,对于路径参数,它工作正常,但对于查询参数,它似乎不起作用。

clj7thdc

clj7thdc1#

根据Getx的创建者,Get.parametersGet.arguments是外部的,必须分配给一个变量。参考文献

读取查询

//Path  /:session/:test?param1=value1&param2=value2

final queryParams = Get.parameters;
final param1 = queryParams['param1'];
final param2 = queryParams['param2'];

读取路径

//Path /session/param1/param2

 final param1 = Get.parameters['param1'];
 final param2 = Get.parameters['param2'];
z5btuh9x

z5btuh9x2#

我开始使用GetMaterialApp.router,因为我以前使用MaterialApp.router来处理query参数,当用户点击链接打开应用程序时。这样我就可以读取path参数,但在尝试访问query参数时,却得到了null
在找不到任何解决方案之后,我决定回到GetMaterialApp,看看它是否像GetMaterialApp.router构造函数一样提供路由选项,这样我的问题就解决了。

GetMaterialApp(
        initialRoute: '/',
        getPages: [
          GetPage(
            name: '/',
            page: () {
              return const OdooAuthWrapper();
            },
          ),
          GetPage(
              name: '/signup',
              page: () {
                return  AddNewPasswordPage(token: Get.parameters['token'],);
              }),
        ],
        // home:  getPage(),
      ),

GetMaterialApp.router提供了更复杂的路由配置,对于某些人来说,使用它可能更有意义,但在我的情况下,GetMaterialApp就足够了。

相关问题