FlutterのRouterクエリで予約文字を使う
Flutter(Dart)のRouterでは、WebのURLと同じくクエリが使える。
Navigator.pushNamed(context, '/hoge?id=${id}');
ただし、IDに特殊文字が入ってくる場合は、Webと同様対策する必要がある。
ここでは#
を例にして説明する。
id='hoge#fuga'
といった内容がある場合、#はアンカーとして使われる予約語のため、事前にエスケープ文字に変換する必要がある。#
のみ対処すれば良い場合、以下のようにすればよい。
Navigator.pushNamed(context, '/hoge?id=${id.replaceAll(RegExp(r'#'), '%23')}');