on web platforms, do not call clipboard status update as security measures block that and currently cause safari to display a paste menu

pull/1722/head
Mike Allen 1 year ago
parent f80c526c69
commit b9571fff08
  1. 7
      lib/src/widgets/others/text_selection.dart
  2. 9
      lib/src/widgets/raw_editor/raw_editor_state.dart

@ -82,7 +82,12 @@ class EditorTextSelectionOverlay {
// our listener being created
// we won't know the status unless there is forced update
// i.e. occasionally no paste
clipboardStatus.update();
if (!kIsWeb) {
// Web - esp Safari Mac/iOS has security measures in place that restrict
// cliboard status checks w/o direct user interaction. So skip this
// for web
clipboardStatus.update();
}
}
TextEditingValue value;

@ -4,7 +4,7 @@ import 'dart:math' as math;
import 'dart:ui' as ui hide TextStyle;
import 'package:collection/collection.dart';
import 'package:flutter/foundation.dart' show defaultTargetPlatform;
import 'package:flutter/foundation.dart' show defaultTargetPlatform, kIsWeb;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart' show RenderAbstractViewport;
import 'package:flutter/scheduler.dart' show SchedulerBinding;
@ -97,7 +97,12 @@ class QuillRawEditorState extends EditorState
String get pastePlainText => _pastePlainText;
String _pastePlainText = '';
final ClipboardStatusNotifier _clipboardStatus = ClipboardStatusNotifier();
// Web - esp Safari Mac/iOS has security measures in place that restrict
// cliboard status checks w/o direct user interaction. Initializing the
// ClipboardStatusNotifier with a default value of unknown will cause the
// clipboard status to be checked w/o user interaction which fails.
final ClipboardStatusNotifier _clipboardStatus = ClipboardStatusNotifier(
value: kIsWeb ? ClipboardStatus.notPasteable : ClipboardStatus.unknown);
final LayerLink _toolbarLayerLink = LayerLink();
final LayerLink _startHandleLayerLink = LayerLink();
final LayerLink _endHandleLayerLink = LayerLink();

Loading…
Cancel
Save