如果您的 Flutter 应用中的 webview 太宽而无法完全显示,您可以尝试以下方法来解决问题:

  1. 设置 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)),
          );
        });
  }
}
  1. 在 webview 中使用适当的 viewport 属性来控制 web 页面的宽度。例如:
<meta name='viewport' content='width=device-width, initial-scale=1.0'>

这将根据屏幕的宽度自动调整 web 页面的大小。如果您在使用 Flutter Webview 插件时遇到任何其他问题,可以查看官方文档或参考其他 Flutter Webview 教程以获取更多帮助。

Flutter Webview 太宽显示不全解决方案

原文地址: https://www.cveoy.top/t/topic/nlHl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录