在 flutter 中从 webview 导航到 InApp 屏幕
Navigate to InApp screen from webview in flutter
我有一个 flutter 应用程序,它有一个 web 视图并浏览特定 URL。网页视图有表单,当填写并提交时,网页视图根据他的表单填写将用户重定向到结果URL。
我正在使用:用于网页视图的 InAppWebView 插件。
我想在点击重定向 url 时导航到我的 DashboardScreen。我无法浏览此屏幕。请帮忙。
下面是我的构建方法:
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: Text("MyApp"),
),
body: InAppWebView(
initialUrl: "myURL",
onWebViewCreated: (InAppWebViewController controller) {
_webViewController = controller;
},
onLoadStop: (InAppWebViewController controller, String url) async {
if (url.startsWith("redirectURL")) {
// get your token from url
Navigator.pop(context);
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (context) => DashboardScreen()));
}
},
),
),
);
}
这是上下文问题。此外,您不必删除替换路线。使用下面的工作代码将解决问题。
final scaffoldKey = GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
key: scaffoldKey,
appBar: AppBar(
title: Text("MyApp"),
),
body: InAppWebView(
initialUrl: "https://www.google.com.pk/",
onWebViewCreated: (InAppWebViewController controller) {},
onLoadStop: (InAppWebViewController controller, String url) async {
if (url.contains("youtube")) {
// get your token from url
// Navigator.pop(scaffoldKey.currentContext); // No need of this
line
Navigator.pushReplacement(scaffoldKey.currentContext,
MaterialPageRoute(builder: (context) => DD()));
}
},
),
),
);
}
我有一个 flutter 应用程序,它有一个 web 视图并浏览特定 URL。网页视图有表单,当填写并提交时,网页视图根据他的表单填写将用户重定向到结果URL。
我正在使用:用于网页视图的 InAppWebView 插件。
我想在点击重定向 url 时导航到我的 DashboardScreen。我无法浏览此屏幕。请帮忙。
下面是我的构建方法:
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: Text("MyApp"),
),
body: InAppWebView(
initialUrl: "myURL",
onWebViewCreated: (InAppWebViewController controller) {
_webViewController = controller;
},
onLoadStop: (InAppWebViewController controller, String url) async {
if (url.startsWith("redirectURL")) {
// get your token from url
Navigator.pop(context);
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (context) => DashboardScreen()));
}
},
),
),
);
}
这是上下文问题。此外,您不必删除替换路线。使用下面的工作代码将解决问题。
final scaffoldKey = GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
key: scaffoldKey,
appBar: AppBar(
title: Text("MyApp"),
),
body: InAppWebView(
initialUrl: "https://www.google.com.pk/",
onWebViewCreated: (InAppWebViewController controller) {},
onLoadStop: (InAppWebViewController controller, String url) async {
if (url.contains("youtube")) {
// get your token from url
// Navigator.pop(scaffoldKey.currentContext); // No need of this
line
Navigator.pushReplacement(scaffoldKey.currentContext,
MaterialPageRoute(builder: (context) => DD()));
}
},
),
),
);
}