From 75fd6d775d4bfdfa055f78f95e9763fd340f9540 Mon Sep 17 00:00:00 2001 From: ivan2282 Date: Sun, 16 Nov 2025 01:14:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D1=81=D1=84=D0=B5?= =?UTF-8?q?=D1=80=D1=83=D0=BC=20=D0=BE=D0=BD=20=D0=BB=D0=B8=D0=BD=D1=83?= =?UTF-8?q?=D0=BA=D1=81=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/chats_screen.dart | 33 +++++++------- linux/CMakeLists.txt | 7 +++ linux/flutter/generated_plugin_registrant.cc | 4 ++ linux/flutter/generated_plugins.cmake | 1 + pubspec.lock | 48 ++++++++++++++++++++ pubspec.yaml | 2 + 6 files changed, 79 insertions(+), 16 deletions(-) diff --git a/lib/chats_screen.dart b/lib/chats_screen.dart index 7c34b6a..9f70790 100644 --- a/lib/chats_screen.dart +++ b/lib/chats_screen.dart @@ -4,7 +4,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:intl/intl.dart'; import 'package:gwid/api_service.dart'; -import 'package:flutter_inappwebview/flutter_inappwebview.dart'; +import 'package:webview_flutter/webview_flutter.dart'; +import 'package:flutter_linux_webview/flutter_linux_webview.dart'; import 'package:gwid/chat_screen.dart'; import 'package:gwid/manage_account_screen.dart'; import 'package:gwid/screens/settings/settings_screen.dart'; @@ -92,6 +93,10 @@ class _ChatsScreenState extends State @override void initState() { super.initState(); + LinuxWebViewPlugin.initialize(); + if (Platform.isLinux){ + WebView.platform = LinuxWebView(); + } _loadMyProfile(); _chatsFuture = (() async { try { @@ -3507,37 +3512,33 @@ class _SferumWebViewPanelState extends State { Expanded( child: Stack( children: [ - InAppWebView( - initialUrlRequest: URLRequest(url: WebUri(widget.url)), - initialSettings: InAppWebViewSettings( - javaScriptEnabled: true, - transparentBackground: true, - useShouldOverrideUrlLoading: false, - useOnLoadResource: false, - useOnDownloadStart: false, - cacheEnabled: true, - ), - onLoadStart: (controller, url) { + WebView( + + initialUrl: widget.url, + javascriptMode: JavascriptMode.unrestricted, + onPageStarted: (url) { print('🌐 WebView начало загрузки: $url'); setState(() { _isLoading = true; }); }, - onLoadStop: (controller, url) { + onPageFinished: (url) { print('✅ WebView загрузка завершена: $url'); setState(() { _isLoading = false; }); }, - onReceivedError: (controller, request, error) { + onWebResourceError: (error) { print( - '❌ WebView ошибка: ${error.description} (${error.type})', + '❌ WebView ошибка: ${error.description} (${error.errorCode})', ); }, + backgroundColor: Colors.transparent, + gestureNavigationEnabled: true, ), if (_isLoading) Container( - color: colors.surface, + color: Colors.grey[100], // Use your theme color instead of colors.surface child: const Center(child: CircularProgressIndicator()), ), ], diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt index 2270c74..cccba7b 100644 --- a/linux/CMakeLists.txt +++ b/linux/CMakeLists.txt @@ -140,3 +140,10 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") endif() + + +# This include() command was automatically added by the flutter_linux_webview +# plugin when building the app with the plugin. The app executable must be +# linked to the CEF library for the WebView plugin to work. This command links +# the app executable to the CEF library. +include(flutter/ephemeral/.plugin_symlinks/flutter_linux_webview/linux/cmake/link_to_cef_library.cmake) \ No newline at end of file diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 22d2f1b..3b87a5b 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -22,6 +23,9 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); file_selector_plugin_register_with_registrar(file_selector_linux_registrar); + g_autoptr(FlPluginRegistrar) flutter_linux_webview_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterLinuxWebviewPlugin"); + flutter_linux_webview_plugin_register_with_registrar(flutter_linux_webview_registrar); g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index ccc33ce..e93d3f8 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST dynamic_color file_selector_linux + flutter_linux_webview flutter_secure_storage_linux flutter_timezone gtk diff --git a/pubspec.lock b/pubspec.lock index bab6763..9db7d2c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -470,6 +470,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.0" + flutter_linux_webview: + dependency: "direct main" + description: + name: flutter_linux_webview + sha256: a11fa8fea77a128e3ffbfefa0324e34df289af56f9d0f94e9569e0daa545bb8a + url: "https://pub.dev" + source: hosted + version: "0.1.3" flutter_localizations: dependency: "direct main" description: flutter @@ -741,6 +749,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.1.1" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" markdown: dependency: transitive description: @@ -1474,6 +1490,38 @@ packages: url: "https://pub.dev" source: hosted version: "2.4.0" + webview_flutter: + dependency: "direct main" + description: + name: webview_flutter + sha256: "392c1d83b70fe2495de3ea2c84531268d5b8de2de3f01086a53334d8b6030a88" + url: "https://pub.dev" + source: hosted + version: "3.0.4" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "8b3b2450e98876c70bfcead876d9390573b34b9418c19e28168b74f6cb252dbd" + url: "https://pub.dev" + source: hosted + version: "2.10.4" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: "812165e4e34ca677bdfbfa58c01e33b27fd03ab5fa75b70832d4b7d4ca1fa8cf" + url: "https://pub.dev" + source: hosted + version: "1.9.5" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: a5364369c758892aa487cbf59ea41d9edd10f9d9baf06a94e80f1bd1b4c7bbc0 + url: "https://pub.dev" + source: hosted + version: "2.9.5" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index e929262..00db2e9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -121,6 +121,8 @@ dependencies: flutter_inappwebview: ^6.1.5 chewie: ^1.7.5 + webview_flutter: ^3.0.4 + flutter_linux_webview: ^0.1.0 dev_dependencies: flutter_test: