Flutter GoRouter不允许我将int值作为queryparam传递

6pp0gazn  于 2023-02-16  发布在  Flutter
关注(0)|答案(1)|浏览(168)

Flutter GoRouter不允许我传递任何非字符串的值作为参数。

收到错误

The following _TypeError was thrown while handling a gesture:
type 'int' is not a subtype of type 'Iterable<dynamic>'

接收int参数的页面:

class ItemOne extends StatelessWidget {
  final int id;

  const ItemOne({super.key, required this.id});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Item 1'),
      ),
      body: Text('This is page for with id: $id'),
    );
  }
}

GoRouter定义

GoRoute(
            path: '/one',
            name: 'one',
            builder: (context, state) {
              return ItemOne(
                id: state.queryParams['idGiven'] as int,
              );
            },
          ),

传递int值的按钮

IconButton(
              onPressed: () => context.pushNamed(
                'one',
                queryParams: <String, dynamic>{
                  'idGiven': 111,
                },
              ),
              icon: const Text('Push One'),
            ),
n7taea2i

n7taea2i1#

是的,确实如此。
是从StringString的Map。
如果你想传递其他东西,你需要把它转换成一个字符串,然后再转换回来。
或者,如果要传递整个对象,则使用extra字段。

相关问题