gate selectable text behind mouse connected

This commit is contained in:
Henry Hiles 2026-09-22 20:40:55 -04:00
commit ed761d6071
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -1,4 +1,5 @@
import "package:fast_immutable_collections/fast_immutable_collections.dart"; import "package:fast_immutable_collections/fast_immutable_collections.dart";
import "package:flutter/rendering.dart";
import "package:material_ui/material_ui.dart"; import "package:material_ui/material_ui.dart";
import "package:flutter_riverpod/flutter_riverpod.dart"; import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart"; import "package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart";
@ -18,10 +19,9 @@ class const Html(
super.key, super.key,
}) extends ConsumerWidget { }) extends ConsumerWidget {
@override @override
Widget build(BuildContext context, WidgetRef ref) => SelectableRegion( Widget build(BuildContext context, WidgetRef ref) {
selectionControls: materialTextSelectionControls,
// needed until https://github.com/daohoangson/flutter_widget_from_html/issues/1618 is resolved // needed until https://github.com/daohoangson/flutter_widget_from_html/issues/1618 is resolved
child: MaterialUiCompatibilityBridge( final htmlWidget = MaterialUiCompatibilityBridge(
child: HtmlWidget( child: HtmlWidget(
html, html,
buildAsync: false, buildAsync: false,
@ -146,6 +146,13 @@ class const Html(
onTapUrl: (url) => onTapUrl: (url) =>
ref.watch(LaunchHelper.provider).launchUrl(.parse(url)), ref.watch(LaunchHelper.provider).launchUrl(.parse(url)),
), ),
), );
);
return RendererBinding.instance.mouseTracker.mouseIsConnected
? SelectableRegion(
selectionControls: materialTextSelectionControls,
child: htmlWidget,
)
: htmlWidget;
}
} }