mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Revert "Change ClipboardStatusNofifier parameter in buildToolbar to V… (#109388)
This commit is contained in:
parent
fbca1927e3
commit
f878bda18c
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'package:flutter/foundation.dart' show ValueListenable, clampDouble;
|
||||
import 'package:flutter/foundation.dart' show clampDouble;
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
@ -51,7 +51,7 @@ class CupertinoDesktopTextSelectionControls extends TextSelectionControls {
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
return _CupertinoDesktopTextSelectionControlsToolbar(
|
||||
@ -106,7 +106,7 @@ class _CupertinoDesktopTextSelectionControlsToolbar extends StatefulWidget {
|
||||
required this.lastSecondaryTapDownPosition,
|
||||
});
|
||||
|
||||
final ValueListenable<ClipboardStatus>? clipboardStatus;
|
||||
final ClipboardStatusNotifier? clipboardStatus;
|
||||
final List<TextSelectionPoint> endpoints;
|
||||
final Rect globalEditableRegion;
|
||||
final VoidCallback? handleCopy;
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:flutter/foundation.dart' show ValueListenable, clampDouble;
|
||||
import 'package:flutter/foundation.dart' show clampDouble;
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
import 'localizations.dart';
|
||||
@ -36,7 +36,7 @@ class _CupertinoTextSelectionControlsToolbar extends StatefulWidget {
|
||||
required this.textLineHeight,
|
||||
});
|
||||
|
||||
final ValueListenable<ClipboardStatus>? clipboardStatus;
|
||||
final ClipboardStatusNotifier? clipboardStatus;
|
||||
final List<TextSelectionPoint> endpoints;
|
||||
final Rect globalEditableRegion;
|
||||
final VoidCallback? handleCopy;
|
||||
@ -213,7 +213,7 @@ class CupertinoTextSelectionControls extends TextSelectionControls {
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
return _CupertinoTextSelectionControlsToolbar(
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'package:flutter/foundation.dart' show ValueListenable, clampDouble;
|
||||
import 'package:flutter/foundation.dart' show clampDouble;
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
@ -38,7 +38,7 @@ class DesktopTextSelectionControls extends TextSelectionControls {
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
return _DesktopTextSelectionControlsToolbar(
|
||||
@ -103,7 +103,7 @@ class _DesktopTextSelectionControlsToolbar extends StatefulWidget {
|
||||
required this.lastSecondaryTapDownPosition,
|
||||
});
|
||||
|
||||
final ValueListenable<ClipboardStatus>? clipboardStatus;
|
||||
final ClipboardStatusNotifier? clipboardStatus;
|
||||
final List<TextSelectionPoint> endpoints;
|
||||
final Rect globalEditableRegion;
|
||||
final VoidCallback? handleCopy;
|
||||
|
@ -4,7 +4,6 @@
|
||||
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
import 'debug.dart';
|
||||
@ -38,7 +37,7 @@ class MaterialTextSelectionControls extends TextSelectionControls {
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
return _TextSelectionControlsToolbar(
|
||||
@ -145,7 +144,7 @@ class _TextSelectionControlsToolbar extends StatefulWidget {
|
||||
required this.textLineHeight,
|
||||
});
|
||||
|
||||
final ValueListenable<ClipboardStatus>? clipboardStatus;
|
||||
final ClipboardStatusNotifier? clipboardStatus;
|
||||
final TextSelectionDelegate delegate;
|
||||
final List<TextSelectionPoint> endpoints;
|
||||
final Rect globalEditableRegion;
|
||||
|
@ -119,7 +119,9 @@ abstract class TextSelectionControls {
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
// TODO(chunhtai): Change to ValueListenable<ClipboardStatus>? once
|
||||
// mirgration is done. https://github.com/flutter/flutter/issues/99360
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
);
|
||||
|
||||
@ -176,7 +178,9 @@ abstract class TextSelectionControls {
|
||||
///
|
||||
/// This is called by subclasses when their cut affordance is activated by
|
||||
/// the user.
|
||||
void handleCut(TextSelectionDelegate delegate) {
|
||||
// TODO(chunhtai): remove optional parameter once migration is done.
|
||||
// https://github.com/flutter/flutter/issues/99360
|
||||
void handleCut(TextSelectionDelegate delegate, [ClipboardStatusNotifier? clipboardStatus]) {
|
||||
delegate.cutSelection(SelectionChangedCause.toolbar);
|
||||
}
|
||||
|
||||
@ -184,7 +188,9 @@ abstract class TextSelectionControls {
|
||||
///
|
||||
/// This is called by subclasses when their copy affordance is activated by
|
||||
/// the user.
|
||||
void handleCopy(TextSelectionDelegate delegate) {
|
||||
// TODO(chunhtai): remove optional parameter once migration is done.
|
||||
// https://github.com/flutter/flutter/issues/99360
|
||||
void handleCopy(TextSelectionDelegate delegate, [ClipboardStatusNotifier? clipboardStatus]) {
|
||||
delegate.copySelection(SelectionChangedCause.toolbar);
|
||||
}
|
||||
|
||||
@ -2472,8 +2478,18 @@ class ClipboardStatusNotifier extends ValueNotifier<ClipboardStatus> with Widget
|
||||
ClipboardStatus value = ClipboardStatus.unknown,
|
||||
}) : super(value);
|
||||
|
||||
bool _disposed = false;
|
||||
// TODO(chunhtai): remove this getter once migration is done.
|
||||
// https://github.com/flutter/flutter/issues/99360
|
||||
/// True if this instance has been disposed.
|
||||
bool get disposed => _disposed;
|
||||
|
||||
/// Check the [Clipboard] and update [value] if needed.
|
||||
Future<void> update() async {
|
||||
if (_disposed) {
|
||||
return;
|
||||
}
|
||||
|
||||
final bool hasStrings;
|
||||
try {
|
||||
hasStrings = await Clipboard.hasStrings();
|
||||
@ -2486,7 +2502,7 @@ class ClipboardStatusNotifier extends ValueNotifier<ClipboardStatus> with Widget
|
||||
));
|
||||
// In the case of an error from the Clipboard API, set the value to
|
||||
// unknown so that it will try to update again later.
|
||||
if (value == ClipboardStatus.unknown) {
|
||||
if (_disposed || value == ClipboardStatus.unknown) {
|
||||
return;
|
||||
}
|
||||
value = ClipboardStatus.unknown;
|
||||
@ -2497,7 +2513,7 @@ class ClipboardStatusNotifier extends ValueNotifier<ClipboardStatus> with Widget
|
||||
? ClipboardStatus.pasteable
|
||||
: ClipboardStatus.notPasteable;
|
||||
|
||||
if (nextStatus == value) {
|
||||
if (_disposed || nextStatus == value) {
|
||||
return;
|
||||
}
|
||||
value = nextStatus;
|
||||
@ -2517,7 +2533,7 @@ class ClipboardStatusNotifier extends ValueNotifier<ClipboardStatus> with Widget
|
||||
@override
|
||||
void removeListener(VoidCallback listener) {
|
||||
super.removeListener(listener);
|
||||
if (!hasListeners) {
|
||||
if (!_disposed && !hasListeners) {
|
||||
WidgetsBinding.instance.removeObserver(this);
|
||||
}
|
||||
}
|
||||
@ -2538,6 +2554,7 @@ class ClipboardStatusNotifier extends ValueNotifier<ClipboardStatus> with Widget
|
||||
@override
|
||||
void dispose() {
|
||||
WidgetsBinding.instance.removeObserver(this);
|
||||
_disposed = true;
|
||||
super.dispose();
|
||||
}
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ class MockTextSelectionControls extends TextSelectionControls {
|
||||
Offset position,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
throw UnimplementedError();
|
||||
|
@ -23,7 +23,7 @@ class _CustomCupertinoTextSelectionControls extends CupertinoTextSelectionContro
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
final MediaQueryData mediaQuery = MediaQuery.of(context);
|
||||
|
@ -21,7 +21,7 @@ class _CustomMaterialTextSelectionControls extends MaterialTextSelectionControls
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
final TextSelectionPoint startTextSelectionPoint = endpoints[0];
|
||||
|
@ -12734,7 +12734,7 @@ class MockTextSelectionControls extends Fake implements TextSelectionControls {
|
||||
Offset position,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
return const SizedBox();
|
||||
@ -12763,8 +12763,10 @@ class MockTextSelectionControls extends Fake implements TextSelectionControls {
|
||||
int pasteCount = 0;
|
||||
int copyCount = 0;
|
||||
|
||||
// TODO(chunhtai): remove optional parameter once migration is done.
|
||||
// https://github.com/flutter/flutter/issues/99360
|
||||
@override
|
||||
void handleCopy(TextSelectionDelegate delegate) {
|
||||
void handleCopy(TextSelectionDelegate delegate, [ClipboardStatusNotifier? clipboardStatus]) {
|
||||
copyCount += 1;
|
||||
}
|
||||
|
||||
@ -12773,8 +12775,10 @@ class MockTextSelectionControls extends Fake implements TextSelectionControls {
|
||||
pasteCount += 1;
|
||||
}
|
||||
|
||||
// TODO(chunhtai): remove optional parameter once migration is done.
|
||||
// https://github.com/flutter/flutter/issues/99360
|
||||
@override
|
||||
void handleCut(TextSelectionDelegate delegate) {
|
||||
void handleCut(TextSelectionDelegate delegate, [ClipboardStatusNotifier? clipboardStatus]) {
|
||||
cutCount += 1;
|
||||
}
|
||||
|
||||
@ -12815,7 +12819,7 @@ class _CustomTextSelectionControls extends TextSelectionControls {
|
||||
Offset position,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
final Offset selectionMidpoint = position;
|
||||
@ -12871,9 +12875,9 @@ class _CustomTextSelectionControls extends TextSelectionControls {
|
||||
}
|
||||
|
||||
@override
|
||||
void handleCut(TextSelectionDelegate delegate) {
|
||||
void handleCut(TextSelectionDelegate delegate, [ClipboardStatusNotifier? clipboardStatus]) {
|
||||
onCut?.call();
|
||||
return super.handleCut(delegate);
|
||||
return super.handleCut(delegate, clipboardStatus);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'package:flutter/foundation.dart' show ValueListenable, defaultTargetPlatform;
|
||||
import 'package:flutter/foundation.dart' show defaultTargetPlatform;
|
||||
import 'package:flutter/gestures.dart' show PointerDeviceKind, kSecondaryButton;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/rendering.dart';
|
||||
@ -1456,7 +1456,7 @@ class TextSelectionControlsSpy extends TextSelectionControls {
|
||||
Offset position,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
return Text('dummy', key: toolBarKey);
|
||||
|
Loading…
Reference in New Issue
Block a user