flutter_webview太宽显示不全
如果您的Flutter应用中的webview太宽而无法完全显示,您可以尝试以下方法来解决问题:
- 设置webview的宽度为屏幕的宽度,可以使用MediaQuery来获取屏幕宽度。例如:
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class MyWebView extends StatelessWidget {
final String url;
MyWebView({this.url});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Webview"),
),
body: WebView(
initialUrl: url,
javascriptMode: JavascriptMode.unrestricted,
// 设置webview的宽度为屏幕宽度
initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
javascriptChannels: <JavascriptChannel>[
_toasterJavascriptChannel(context),
].toSet(),
navigationDelegate: (NavigationRequest request) {
if (request.url.startsWith('https://www.youtube.com/')) {
print('blocking navigation to $request}');
return NavigationDecision.prevent;
}
print('allowing navigation to $request');
return NavigationDecision.navigate;
},
onPageStarted: (String url) {
print('Page started loading: $url');
},
onPageFinished: (String url) {
print('Page finished loading: $url');
},
gestureNavigationEnabled: true,
),
);
}
JavascriptChannel _toasterJavascriptChannel(BuildContext context) {
return JavascriptChannel(
name: 'Toaster',
onMessageReceived: (JavascriptMessage message) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(message.message)),
);
});
}
}
- 在webview中使用适当的viewport属性来控制web页面的宽度。例如:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
这将根据屏幕的宽度自动调整web页面的大小。如果您在使用Flutter Webview插件时遇到任何其他问题,可以查看官方文档或参考其他Flutter Webview教程以获取更多帮助。
原文地址: https://www.cveoy.top/t/topic/b0W1 著作权归作者所有。请勿转载和采集!