Unverified Commit 98ce4bf7 authored by chunhtai's avatar chunhtai Committed by GitHub

Change ClipboardStatusNofifier parameter in buildToolbar to ValueLise… (#108917)

parent a1af1bb9
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment