You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
samples/simplistic_editor/lib/text_editing_delta_history_...

41 lines
1.5 KiB

import 'package:flutter/services.dart' show TextEditingDelta;
import 'package:flutter/widgets.dart';
/// Signature for the callback that updates text editing delta history when a new delta
/// is received.
typedef TextEditingDeltaHistoryUpdateCallback = void Function(
List<TextEditingDelta> textEditingDeltas);
class TextEditingDeltaHistoryManager extends InheritedWidget {
const TextEditingDeltaHistoryManager({
super.key,
required super.child,
required List<TextEditingDelta> history,
required TextEditingDeltaHistoryUpdateCallback updateHistoryOnInput,
}) : _textEditingDeltaHistory = history,
_updateTextEditingDeltaHistoryOnInput = updateHistoryOnInput;
static TextEditingDeltaHistoryManager of(BuildContext context) {
final TextEditingDeltaHistoryManager? result = context
.dependOnInheritedWidgetOfExactType<TextEditingDeltaHistoryManager>();
assert(
result != null, 'No TextEditingDeltaHistoryManager found in context');
return result!;
}
final List<TextEditingDelta> _textEditingDeltaHistory;
final TextEditingDeltaHistoryUpdateCallback
_updateTextEditingDeltaHistoryOnInput;
List<TextEditingDelta> get textEditingDeltaHistory =>
_textEditingDeltaHistory;
TextEditingDeltaHistoryUpdateCallback
get updateTextEditingDeltaHistoryOnInput =>
_updateTextEditingDeltaHistoryOnInput;
@override
bool updateShouldNotify(TextEditingDeltaHistoryManager oldWidget) {
return textEditingDeltaHistory != oldWidget.textEditingDeltaHistory;
}
}