我正在开发一个涵盖多个平台的 flutter 项目。我的应用程序有一个支付 api,它还有一个回调 url,可以将一些 url 参数发送到我的结果屏幕。我的付款结果屏幕的 url 是 https://myapp.com/payment-result
。我想读取我的回调 url 的参数,它们是:https://myapp.com/payment-result/?status=20&amount=2
另一方面,这个 url,总是重新启动我的 Web 应用程序并将我带到应用程序的第一页。
这是我的付款结果屏幕:
class PaymentResult extends StatelessWidget {
static const routeName = '/payment-result';
@override
Widget build(BuildContext context) {
final args = ModalRoute.of(context)!.settings.arguments as Map;
bool shouldPop = true;
return WillPopScope(
onWillPop: () async {
Navigator.of(context).popAndPushNamed('tab-screen');
return shouldPop;
},
child: Scaffold(
body: kIsWeb ? WebWidget(args:args): MobileWidget(args: args),
),
);
}
}
我在主小部件上管理我的路线是这样的:
routes: {
SelectPlan.routName: (ctx) => SelectPlan(),
MealDetails.routeName: (ctx) => MealDetails(),
AuthScreen.routeName: (ctx) => AuthScreen(),
PaymentResult.routeName: (ctx) => DailyDetails(),
SelectSub.routeName: (ctx) => SelectSub(),
OrderScreen.routName: (ctx) => OrderScreen(),
最佳答案
您可以使用来自 https://pub.dev 的 go_router
包.
它是由 flutter 团队为这种路由制作的。
- 基本设置
class App extends StatelessWidget {
App({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) => MaterialApp.router(
routeInformationParser: _router.routeInformationParser,
routerDelegate: _router.routerDelegate,
title: 'GoRouter Example',
);
final GoRouter _router = GoRouter(
routes: <GoRoute>[
GoRoute(
path: '/',
builder: (BuildContext context, GoRouterState state) => const Page1Screen(),
),
GoRoute(
path: '/page2',
builder: (BuildContext context, GoRouterState state) => const Page2Screen(),
),
],
);
}
class Page1Screen extends StatelessWidget {...}
class Page2Screen extends StatelessWidget {...}
关于flutter - 将 url 参数传递给 flutter web,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72536038/