sync flutter widgets

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-02-12 11:01:35 +08:00
parent fbf7116edf
commit 483953cf56
31 changed files with 804 additions and 646 deletions

View File

@@ -99,7 +99,7 @@ class _CupertinoTextFieldSelectionGestureDetectorBuilder
// this handler. If the clear button widget recognizes the up event,
// then do not handle it.
if (_state._clearGlobalKey.currentContext != null) {
final RenderBox renderBox =
final renderBox =
_state._clearGlobalKey.currentContext!.findRenderObject()!
as RenderBox;
final Offset localOffset = renderBox.globalToLocal(
@@ -1482,6 +1482,7 @@ class _CupertinoRichTextFieldState extends State<CupertinoRichTextField>
child: _BaselineAlignedStack(
placeholder: placeholder,
editableText: editableText,
textAlignVertical: _textAlignVertical,
editableTextBaseline:
textStyle.textBaseline ?? TextBaseline.alphabetic,
placeholderBaseline:
@@ -1555,11 +1556,11 @@ class _CupertinoRichTextFieldState extends State<CupertinoRichTextField>
}
final bool enabled = widget.enabled;
final Offset cursorOffset = Offset(
final cursorOffset = Offset(
_iOSHorizontalCursorOffsetPixels / MediaQuery.devicePixelRatioOf(context),
0,
);
final List<TextInputFormatter> formatters = <TextInputFormatter>[
final formatters = <TextInputFormatter>[
...?widget.inputFormatters,
if (widget.maxLength != null)
LengthLimitingTextInputFormatter(
@@ -1617,7 +1618,7 @@ class _CupertinoRichTextFieldState extends State<CupertinoRichTextField>
);
final BoxBorder? border = widget.decoration?.border;
Border? resolvedBorder = border as Border?;
var resolvedBorder = border as Border?;
if (border is Border) {
BorderSide resolveBorderSide(BorderSide side) {
return side == BorderSide.none
@@ -1828,14 +1829,16 @@ class _BaselineAlignedStack
const _BaselineAlignedStack({
required this.editableTextBaseline,
required this.placeholderBaseline,
required this.textAlignVertical,
required this.editableText,
this.placeholder,
});
final TextBaseline editableTextBaseline;
final TextBaseline placeholderBaseline;
final Widget? placeholder;
final TextAlignVertical textAlignVertical;
final Widget editableText;
final Widget? placeholder;
@override
Iterable<_BaselineAlignedStackSlot> get slots =>
@@ -1852,6 +1855,7 @@ class _BaselineAlignedStack
@override
_RenderBaselineAlignedStack createRenderObject(BuildContext context) {
return _RenderBaselineAlignedStack(
textAlignVertical: textAlignVertical,
editableTextBaseline: editableTextBaseline,
placeholderBaseline: placeholderBaseline,
);
@@ -1863,6 +1867,7 @@ class _BaselineAlignedStack
_RenderBaselineAlignedStack renderObject,
) {
renderObject
..textAlignVertical = textAlignVertical
..editableTextBaseline = editableTextBaseline
..placeholderBaseline = placeholderBaseline;
}
@@ -1878,11 +1883,23 @@ class _RenderBaselineAlignedStack extends RenderBox
RenderBox
> {
_RenderBaselineAlignedStack({
required TextAlignVertical textAlignVertical,
required TextBaseline editableTextBaseline,
required TextBaseline placeholderBaseline,
}) : _editableTextBaseline = editableTextBaseline,
}) : _textAlignVertical = textAlignVertical,
_editableTextBaseline = editableTextBaseline,
_placeholderBaseline = placeholderBaseline;
TextAlignVertical get textAlignVertical => _textAlignVertical;
TextAlignVertical _textAlignVertical;
set textAlignVertical(TextAlignVertical value) {
if (_textAlignVertical == value) {
return;
}
_textAlignVertical = value;
markNeedsLayout();
}
TextBaseline get editableTextBaseline => _editableTextBaseline;
TextBaseline _editableTextBaseline;
set editableTextBaseline(TextBaseline value) {
@@ -1960,9 +1977,9 @@ class _RenderBaselineAlignedStack extends RenderBox
final RenderBox? placeholder = _placeholderChild;
final RenderBox editableText = _editableTextChild;
final _BaselineAlignedStackParentData editableTextParentData =
final editableTextParentData =
editableText.parentData! as _BaselineAlignedStackParentData;
final _BaselineAlignedStackParentData? placeholderParentData =
final placeholderParentData =
placeholder?.parentData as _BaselineAlignedStackParentData?;
size = _computeSize(
@@ -1979,13 +1996,17 @@ class _RenderBaselineAlignedStack extends RenderBox
);
assert(placeholder != null || placeholderBaselineValue == null);
final double placeholderY = placeholderBaselineValue != null
? editableTextBaselineValue - placeholderBaselineValue
: 0.0;
final Offset baselineDiff = placeholderBaselineValue != null
? Offset(0.0, editableTextBaselineValue - placeholderBaselineValue)
: Offset.zero;
final verticalAlignment = Alignment(0.0, textAlignVertical.y);
final double offsetYAdjustment = math.max(0, placeholderY);
editableTextParentData.offset = Offset(0, offsetYAdjustment);
placeholderParentData?.offset = Offset(0, placeholderY + offsetYAdjustment);
editableTextParentData.offset = verticalAlignment.alongOffset(
size - editableText.size as Offset,
);
// Baseline-align the placeholder to the editable text.
placeholderParentData?.offset =
editableTextParentData.offset + baselineDiff;
}
@override
@@ -1994,12 +2015,12 @@ class _RenderBaselineAlignedStack extends RenderBox
final RenderBox editableText = _editableTextChild;
if (placeholder != null) {
final _BaselineAlignedStackParentData placeholderParentData =
final placeholderParentData =
placeholder.parentData! as _BaselineAlignedStackParentData;
context.paintChild(placeholder, offset + placeholderParentData.offset);
}
final _BaselineAlignedStackParentData editableTextParentData =
final editableTextParentData =
editableText.parentData! as _BaselineAlignedStackParentData;
context.paintChild(editableText, offset + editableTextParentData.offset);
}
@@ -2054,7 +2075,7 @@ class _RenderBaselineAlignedStack extends RenderBox
height = math.max(height, editableTextSize.height);
width = math.max(width, editableTextSize.width);
final Size size = Size(width, height);
final size = Size(width, height);
assert(size.isFinite);
return constraints.constrain(size);
}
@@ -2062,7 +2083,7 @@ class _RenderBaselineAlignedStack extends RenderBox
@override
bool hitTestChildren(BoxHitTestResult result, {required Offset position}) {
final RenderBox editableText = _editableTextChild;
final _BaselineAlignedStackParentData editableTextParentData =
final editableTextParentData =
editableText.parentData! as _BaselineAlignedStackParentData;
return result.addWithPaintOffset(