Skip to content

Commit 7296b39

Browse files
committed
Fixes for Flutter 3.13 breaking changes (#46)
1 parent cadcb23 commit 7296b39

File tree

14 files changed

+120
-274
lines changed

14 files changed

+120
-274
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## [6.0.0] - 2023.08.22
2+
3+
- Fixes for breaking changes in Flutter 2.13, mostly related to the text selection API.
4+
15
## [5.0.0] - 2023.05.15
26

37
- Update APIs to match the Flutter 3.10 and Dart 3.0 release. (#45) (@Satsrag)

analysis_options.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
include: package:flutter_lints/flutter.yaml
1+
include: package:lints/recommended.yaml
22

33
analyzer:
4-
exclude: [build/**]
54
language:
65
strict-casts: true
76
strict-raw-types: true

example/lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import 'demos/resizable_text_demo.dart';
1818
import 'demos/text_demo.dart';
1919
import 'demos/text_span_demo.dart';
2020

21-
const versionTitle = 'Flutter mongol package 5.0.0';
21+
const versionTitle = 'Flutter mongol package 6.0.0';
2222

2323
void main() {
2424
runApp(const DemoApp());

example/macos/Runner.xcodeproj/project.pbxproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@
182182
isa = PBXProject;
183183
attributes = {
184184
LastSwiftUpdateCheck = 0920;
185-
LastUpgradeCheck = 1300;
185+
LastUpgradeCheck = 1430;
186186
ORGANIZATIONNAME = "The Flutter Authors";
187187
TargetAttributes = {
188188
33CC10EC2044A3C60003C045 = {

example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1300"
3+
LastUpgradeVersion = "1430"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

example/pubspec.lock

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ packages:
3737
dependency: transitive
3838
description:
3939
name: collection
40-
sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
40+
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
4141
url: "https://pub.dev"
4242
source: hosted
43-
version: "1.17.1"
43+
version: "1.17.2"
4444
fake_async:
4545
dependency: transitive
4646
description:
@@ -58,47 +58,39 @@ packages:
5858
dependency: "direct dev"
5959
description:
6060
name: flutter_lints
61-
sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c
61+
sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4"
6262
url: "https://pub.dev"
6363
source: hosted
64-
version: "2.0.1"
64+
version: "2.0.2"
6565
flutter_test:
6666
dependency: "direct dev"
6767
description: flutter
6868
source: sdk
6969
version: "0.0.0"
70-
js:
71-
dependency: transitive
72-
description:
73-
name: js
74-
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
75-
url: "https://pub.dev"
76-
source: hosted
77-
version: "0.6.7"
7870
lints:
7971
dependency: transitive
8072
description:
8173
name: lints
82-
sha256: "6b0206b0bf4f04961fc5438198ccb3a885685cd67d4d4a32cc20ad7f8adbe015"
74+
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
8375
url: "https://pub.dev"
8476
source: hosted
85-
version: "2.1.0"
77+
version: "2.1.1"
8678
matcher:
8779
dependency: transitive
8880
description:
8981
name: matcher
90-
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
82+
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
9183
url: "https://pub.dev"
9284
source: hosted
93-
version: "0.12.15"
85+
version: "0.12.16"
9486
material_color_utilities:
9587
dependency: transitive
9688
description:
9789
name: material_color_utilities
98-
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
90+
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
9991
url: "https://pub.dev"
10092
source: hosted
101-
version: "0.2.0"
93+
version: "0.5.0"
10294
meta:
10395
dependency: transitive
10496
description:
@@ -113,7 +105,7 @@ packages:
113105
path: ".."
114106
relative: true
115107
source: path
116-
version: "5.0.0"
108+
version: "6.0.0"
117109
path:
118110
dependency: transitive
119111
description:
@@ -131,10 +123,10 @@ packages:
131123
dependency: transitive
132124
description:
133125
name: source_span
134-
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
126+
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
135127
url: "https://pub.dev"
136128
source: hosted
137-
version: "1.9.1"
129+
version: "1.10.0"
138130
stack_trace:
139131
dependency: transitive
140132
description:
@@ -171,10 +163,10 @@ packages:
171163
dependency: transitive
172164
description:
173165
name: test_api
174-
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
166+
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
175167
url: "https://pub.dev"
176168
source: hosted
177-
version: "0.5.1"
169+
version: "0.6.0"
178170
vector_math:
179171
dependency: transitive
180172
description:
@@ -183,5 +175,13 @@ packages:
183175
url: "https://pub.dev"
184176
source: hosted
185177
version: "2.1.4"
178+
web:
179+
dependency: transitive
180+
description:
181+
name: web
182+
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
183+
url: "https://pub.dev"
184+
source: hosted
185+
version: "0.1.4-beta"
186186
sdks:
187-
dart: ">=3.0.0 <4.0.0"
187+
dart: ">=3.1.0-185.0.dev <4.0.0"

lib/src/editing/mongol_editable_text.dart

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ import 'package:flutter/material.dart'
2525
ScrollToDocumentBoundaryIntent,
2626
Size,
2727
kMinInteractiveDimension;
28-
import 'package:flutter/rendering.dart'
29-
show CaretChangedHandler, RevealedOffset, ViewportOffset;
28+
import 'package:flutter/rendering.dart' show RevealedOffset, ViewportOffset;
3029
import 'package:flutter/scheduler.dart';
3130
import 'package:flutter/services.dart';
3231
import 'package:flutter/widgets.dart'
@@ -133,7 +132,6 @@ import 'package:mongol/src/base/mongol_text_align.dart';
133132
import 'package:mongol/src/editing/mongol_render_editable.dart';
134133
import 'package:mongol/src/editing/text_selection/mongol_text_selection.dart';
135134

136-
import 'mongol_text_editing_action.dart';
137135
import 'mongol_text_editing_intents.dart';
138136

139137
export 'package:flutter/services.dart'
@@ -381,7 +379,7 @@ class MongolEditableText extends StatefulWidget {
381379
'Use `contextMenuBuilder` instead. '
382380
'This feature was deprecated after v3.3.0-0.5.pre.',
383381
)
384-
ToolbarOptions? toolbarOptions,
382+
ToolbarOptions? toolbarOptions,
385383
this.autofillHints,
386384
this.autofillClient,
387385
this.clipBehavior = Clip.hardEdge,
@@ -1373,8 +1371,9 @@ class MongolEditableTextState extends State<MongolEditableText>
13731371
AutomaticKeepAliveClientMixin<MongolEditableText>,
13741372
WidgetsBindingObserver,
13751373
TickerProviderStateMixin<MongolEditableText>,
1376-
TextSelectionDelegate
1377-
implements TextInputClient, AutofillClient, MongolTextEditingActionTarget {
1374+
TextSelectionDelegate,
1375+
TextInputClient
1376+
implements AutofillClient {
13781377
Timer? _cursorTimer;
13791378
AnimationController get _cursorBlinkOpacityController {
13801379
return _backingCursorBlinkOpacityController ??= AnimationController(
@@ -2543,12 +2542,6 @@ class MongolEditableTextState extends State<MongolEditableText>
25432542
}
25442543
}
25452544

2546-
Rect? _currentCaretRect;
2547-
2548-
void _handleCaretChanged(Rect caretRect) {
2549-
_currentCaretRect = caretRect;
2550-
}
2551-
25522545
// Animation configuration for scrolling the caret back on screen.
25532546
static const Duration _caretAnimationDuration = Duration(milliseconds: 100);
25542547
static const Curve _caretAnimationCurve = Curves.fastOutSlowIn;
@@ -2562,7 +2555,13 @@ class MongolEditableTextState extends State<MongolEditableText>
25622555
_showCaretOnScreenScheduled = true;
25632556
SchedulerBinding.instance.addPostFrameCallback((Duration _) {
25642557
_showCaretOnScreenScheduled = false;
2565-
if (_currentCaretRect == null || !_scrollController.hasClients) {
2558+
// Since we are in a post frame callback, check currentContext in case
2559+
// RenderEditable has been disposed (in which case it will be null).
2560+
final renderEditable = _editableKey.currentContext?.findRenderObject()
2561+
as MongolRenderEditable?;
2562+
if (renderEditable == null ||
2563+
!(renderEditable.selection?.isValid ?? false) ||
2564+
!_scrollController.hasClients) {
25662565
return;
25672566
}
25682567

@@ -2592,7 +2591,9 @@ class MongolEditableTextState extends State<MongolEditableText>
25922591

25932592
final caretPadding = widget.scrollPadding.copyWith(right: rightSpacing);
25942593

2595-
final targetOffset = _getOffsetToRevealCaret(_currentCaretRect!);
2594+
final caretRect =
2595+
renderEditable.getLocalRectForCaret(renderEditable.selection!.extent);
2596+
final targetOffset = _getOffsetToRevealCaret(caretRect);
25962597

25972598
final Rect rectToReveal;
25982599
final TextSelection selection = textEditingValue.selection;
@@ -2891,8 +2892,7 @@ class MongolEditableTextState extends State<MongolEditableText>
28912892
///
28922893
/// This property is typically used to notify the renderer of input gestures
28932894
/// when [MongolRenderEditable.ignorePointer] is true.
2894-
@override
2895-
MongolRenderEditable get renderEditable =>
2895+
late final MongolRenderEditable renderEditable =
28962896
_editableKey.currentContext!.findRenderObject()! as MongolRenderEditable;
28972897

28982898
@override
@@ -3590,7 +3590,6 @@ class MongolEditableTextState extends State<MongolEditableText>
35903590
autocorrect: widget.autocorrect,
35913591
enableSuggestions: widget.enableSuggestions,
35923592
offset: offset,
3593-
onCaretChanged: _handleCaretChanged,
35943593
rendererIgnoresPointer: widget.rendererIgnoresPointer,
35953594
cursorWidth: widget.cursorWidth,
35963595
cursorHeight: widget.cursorHeight,
@@ -3665,7 +3664,6 @@ class _MongolEditable extends LeafRenderObjectWidget {
36653664
required this.autocorrect,
36663665
required this.enableSuggestions,
36673666
required this.offset,
3668-
this.onCaretChanged,
36693667
this.rendererIgnoresPointer = false,
36703668
this.cursorWidth,
36713669
required this.cursorHeight,
@@ -3697,7 +3695,6 @@ class _MongolEditable extends LeafRenderObjectWidget {
36973695
final bool autocorrect;
36983696
final bool enableSuggestions;
36993697
final ViewportOffset offset;
3700-
final CaretChangedHandler? onCaretChanged;
37013698
final bool rendererIgnoresPointer;
37023699
final double? cursorWidth;
37033700
final double cursorHeight;
@@ -3727,7 +3724,6 @@ class _MongolEditable extends LeafRenderObjectWidget {
37273724
textAlign: textAlign,
37283725
selection: value.selection,
37293726
offset: offset,
3730-
onCaretChanged: onCaretChanged,
37313727
ignorePointer: rendererIgnoresPointer,
37323728
obscuringCharacter: obscuringCharacter,
37333729
obscureText: obscureText,
@@ -3762,7 +3758,6 @@ class _MongolEditable extends LeafRenderObjectWidget {
37623758
..textAlign = textAlign
37633759
..selection = value.selection
37643760
..offset = offset
3765-
..onCaretChanged = onCaretChanged
37663761
..ignorePointer = rendererIgnoresPointer
37673762
..obscuringCharacter = obscuringCharacter
37683763
..obscureText = obscureText

lib/src/editing/mongol_input_decorator.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,7 @@ class _RenderDecorationLayout {
635635

636636
// The workhorse: layout and paint a _Decorator widget's _Decoration.
637637
class _RenderDecoration extends RenderBox
638-
with SlottedContainerRenderObjectMixin<_DecorationSlot> {
638+
with SlottedContainerRenderObjectMixin<_DecorationSlot, RenderBox> {
639639
_RenderDecoration({
640640
required _Decoration decoration,
641641
required TextBaseline textBaseline,
@@ -1455,8 +1455,8 @@ class _RenderDecoration extends RenderBox
14551455
}
14561456
}
14571457

1458-
class _Decorator extends RenderObjectWidget
1459-
with SlottedMultiChildRenderObjectWidgetMixin<_DecorationSlot> {
1458+
class _Decorator
1459+
extends SlottedMultiChildRenderObjectWidget<_DecorationSlot, RenderBox> {
14601460
const _Decorator({
14611461
required this.textAlignHorizontal,
14621462
required this.decoration,

0 commit comments

Comments
 (0)