mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Change ClipboardStatusNofifier parameter in buildToolbar to ValueLise… (#108917)
This commit is contained in:
parent
a1af1bb92f
commit
98ce4bf7c6
@ -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 clampDouble;
|
||||
import 'package:flutter/foundation.dart' show ValueListenable, clampDouble;
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
@ -49,7 +49,7 @@ class _CupertinoDesktopTextSelectionControls extends TextSelectionControls {
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
return _CupertinoDesktopTextSelectionControlsToolbar(
|
||||
@ -104,7 +104,7 @@ class _CupertinoDesktopTextSelectionControlsToolbar extends StatefulWidget {
|
||||
required this.lastSecondaryTapDownPosition,
|
||||
});
|
||||
|
||||
final ClipboardStatusNotifier? clipboardStatus;
|
||||
final ValueListenable<ClipboardStatus>? 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 clampDouble;
|
||||
import 'package:flutter/foundation.dart' show ValueListenable, clampDouble;
|
||||
import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
@ -37,7 +37,7 @@ class _CupertinoTextSelectionControlsToolbar extends StatefulWidget {
|
||||
required this.textLineHeight,
|
||||
});
|
||||
|
||||
final ClipboardStatusNotifier? clipboardStatus;
|
||||
final ValueListenable<ClipboardStatus>? clipboardStatus;
|
||||
final List<TextSelectionPoint> endpoints;
|
||||
final Rect globalEditableRegion;
|
||||
final VoidCallback? handleCopy;
|
||||
@ -211,7 +211,7 @@ class CupertinoTextSelectionControls extends TextSelectionControls {
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
ValueListenable<ClipboardStatus>? 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 clampDouble;
|
||||
import 'package:flutter/foundation.dart' show ValueListenable, clampDouble;
|
||||
import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
@ -35,7 +35,7 @@ class _DesktopTextSelectionControls extends TextSelectionControls {
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
return _DesktopTextSelectionControlsToolbar(
|
||||
@ -100,7 +100,7 @@ class _DesktopTextSelectionControlsToolbar extends StatefulWidget {
|
||||
required this.lastSecondaryTapDownPosition,
|
||||
});
|
||||
|
||||
final ClipboardStatusNotifier? clipboardStatus;
|
||||
final ValueListenable<ClipboardStatus>? clipboardStatus;
|
||||
final List<TextSelectionPoint> endpoints;
|
||||
final Rect globalEditableRegion;
|
||||
final VoidCallback? handleCopy;
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
@ -35,7 +36,7 @@ class MaterialTextSelectionControls extends TextSelectionControls {
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
return _TextSelectionControlsToolbar(
|
||||
@ -142,7 +143,7 @@ class _TextSelectionControlsToolbar extends StatefulWidget {
|
||||
required this.textLineHeight,
|
||||
});
|
||||
|
||||
final ClipboardStatusNotifier? clipboardStatus;
|
||||
final ValueListenable<ClipboardStatus>? clipboardStatus;
|
||||
final TextSelectionDelegate delegate;
|
||||
final List<TextSelectionPoint> endpoints;
|
||||
final Rect globalEditableRegion;
|
||||
|
||||
@ -113,9 +113,7 @@ abstract class TextSelectionControls {
|
||||
Offset position,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
// TODO(chunhtai): Change to ValueListenable<ClipboardStatus>? once
|
||||
// mirgration is done. https://github.com/flutter/flutter/issues/99360
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
);
|
||||
|
||||
@ -172,9 +170,7 @@ abstract class TextSelectionControls {
|
||||
///
|
||||
/// This is called by subclasses when their cut affordance is activated by
|
||||
/// the user.
|
||||
// TODO(chunhtai): remove optional parameter once migration is done.
|
||||
// https://github.com/flutter/flutter/issues/99360
|
||||
void handleCut(TextSelectionDelegate delegate, [ClipboardStatusNotifier? clipboardStatus]) {
|
||||
void handleCut(TextSelectionDelegate delegate) {
|
||||
delegate.cutSelection(SelectionChangedCause.toolbar);
|
||||
}
|
||||
|
||||
@ -182,9 +178,7 @@ abstract class TextSelectionControls {
|
||||
///
|
||||
/// This is called by subclasses when their copy affordance is activated by
|
||||
/// the user.
|
||||
// TODO(chunhtai): remove optional parameter once migration is done.
|
||||
// https://github.com/flutter/flutter/issues/99360
|
||||
void handleCopy(TextSelectionDelegate delegate, [ClipboardStatusNotifier? clipboardStatus]) {
|
||||
void handleCopy(TextSelectionDelegate delegate) {
|
||||
delegate.copySelection(SelectionChangedCause.toolbar);
|
||||
}
|
||||
|
||||
@ -2423,18 +2417,8 @@ 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();
|
||||
@ -2447,7 +2431,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 (_disposed || value == ClipboardStatus.unknown) {
|
||||
if (value == ClipboardStatus.unknown) {
|
||||
return;
|
||||
}
|
||||
value = ClipboardStatus.unknown;
|
||||
@ -2458,7 +2442,7 @@ class ClipboardStatusNotifier extends ValueNotifier<ClipboardStatus> with Widget
|
||||
? ClipboardStatus.pasteable
|
||||
: ClipboardStatus.notPasteable;
|
||||
|
||||
if (_disposed || nextStatus == value) {
|
||||
if (nextStatus == value) {
|
||||
return;
|
||||
}
|
||||
value = nextStatus;
|
||||
@ -2478,7 +2462,7 @@ class ClipboardStatusNotifier extends ValueNotifier<ClipboardStatus> with Widget
|
||||
@override
|
||||
void removeListener(VoidCallback listener) {
|
||||
super.removeListener(listener);
|
||||
if (!_disposed && !hasListeners) {
|
||||
if (!hasListeners) {
|
||||
WidgetsBinding.instance.removeObserver(this);
|
||||
}
|
||||
}
|
||||
@ -2499,7 +2483,6 @@ 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,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
throw UnimplementedError();
|
||||
|
||||
@ -24,7 +24,7 @@ class _CustomCupertinoTextSelectionControls extends CupertinoTextSelectionContro
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
final MediaQueryData mediaQuery = MediaQuery.of(context);
|
||||
|
||||
@ -22,7 +22,7 @@ class _CustomMaterialTextSelectionControls extends MaterialTextSelectionControls
|
||||
Offset selectionMidpoint,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
ValueListenable<ClipboardStatus>? 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,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
return const SizedBox();
|
||||
@ -12763,10 +12763,8 @@ 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, [ClipboardStatusNotifier? clipboardStatus]) {
|
||||
void handleCopy(TextSelectionDelegate delegate) {
|
||||
copyCount += 1;
|
||||
}
|
||||
|
||||
@ -12775,10 +12773,8 @@ 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, [ClipboardStatusNotifier? clipboardStatus]) {
|
||||
void handleCut(TextSelectionDelegate delegate) {
|
||||
cutCount += 1;
|
||||
}
|
||||
|
||||
@ -12819,7 +12815,7 @@ class _CustomTextSelectionControls extends TextSelectionControls {
|
||||
Offset position,
|
||||
List<TextSelectionPoint> endpoints,
|
||||
TextSelectionDelegate delegate,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
final Offset selectionMidpoint = position;
|
||||
@ -12875,9 +12871,9 @@ class _CustomTextSelectionControls extends TextSelectionControls {
|
||||
}
|
||||
|
||||
@override
|
||||
void handleCut(TextSelectionDelegate delegate, [ClipboardStatusNotifier? clipboardStatus]) {
|
||||
void handleCut(TextSelectionDelegate delegate) {
|
||||
onCut?.call();
|
||||
return super.handleCut(delegate, clipboardStatus);
|
||||
return super.handleCut(delegate);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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 defaultTargetPlatform;
|
||||
import 'package:flutter/foundation.dart' show ValueListenable, 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,
|
||||
ClipboardStatusNotifier? clipboardStatus,
|
||||
ValueListenable<ClipboardStatus>? clipboardStatus,
|
||||
Offset? lastSecondaryTapDownPosition,
|
||||
) {
|
||||
return Text('dummy', key: toolBarKey);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user