TinoGuo / pin_input_text_field

A textField widget to help display different style pin
Apache License 2.0
384 stars 83 forks source link

Bad state: No element #101

Closed wudb closed 1 month ago

wudb commented 3 months ago

错误如下: The following StateError was thrown during paint(): Bad state: No element

When the exception was thrown, this was the stack:

0 List.single (dart:core-patch/growable_array.dart:353:22)

1 TextPainter.getFullHeightForCaret (package:flutter/src/painting/text_painter.dart:1356:122)

2 RenderEditable.getLocalRectForCaret (package:flutter/src/rendering/editable.dart:1801:48)

3 _CaretPainter.paintRegularCursor (package:flutter/src/rendering/editable.dart:2941:46)

4 _CaretPainter.paint (package:flutter/src/rendering/editable.dart:2980:7)

5 _CompositeRenderEditablePainter.paint (package:flutter/src/rendering/editable.dart:3037:15)

6 _RenderEditableCustomPaint.paint (package:flutter/src/rendering/editable.dart:2696:15)

7 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3239:7)

8 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:166:11)

9 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:109:5)

10 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1182:31)

11 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1192:15)

12 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:579:23)

13 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1138:13)

14 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:443:5)

15 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1392:15)

16 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1313:9)

17 SchedulerBinding.scheduleWarmUpFrame. (package:flutter/src/scheduler/binding.dart:1035:9)

18 PlatformDispatcher.scheduleWarmUpFrame. (dart:ui/platform_dispatcher.dart:837:16)

22 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)

(elided 3 frames from class _Timer and dart:async-patch) The following RenderObject was being processed when the exception was fired: _RenderEditableCustomPaint#c5b8d ... needs compositing ... parentData: widget: null, not laid out ... constraints: BoxConstraints(w=390.0, h=0.0) ... layer: OffsetLayer#1a00e ... engine layer: OffsetEngineLayer#1c4a7 ... handles: 2 ... offset: Offset(0.0, 0.0) ... size: Size(390.0, 0.0) RenderObject: _RenderEditableCustomPaint#c5b8d needs compositing parentData: widget: null, not laid out constraints: BoxConstraints(w=390.0, h=0.0) layer: OffsetLayer#1a00e engine layer: OffsetEngineLayer#1c4a7 handles: 2 offset: Offset(0.0, 0.0) size: Size(390.0, 0.0)

Reloaded 1 of 1383 libraries in 211ms (compile: 19 ms, reload: 80 ms, reassemble: 72 ms).

环境 os: mac os 14.5 flutter: 3.22.2

wudb commented 3 months ago

代码如下: PinInputTextField( pinLength: 5, decoration: BoxLooseDecoration( strokeColorBuilder: PinListenColorBuilder(Colors.black, Colors.white), bgColorBuilder: const FixedColorBuilder(Colors.white), ), // controller: controller.codeController, keyboardType: TextInputType.number, // focusNode: controller.codeFocusNode, onSubmit: (code) { }, cursor: Cursor(width: 2, height: 20, color: Colors.black), ),

TinoGuo commented 3 months ago

这个error是在点击时触发的还是渲染的时候?

wudb commented 3 months ago

点击的时候

minhtritc97 commented 3 months ago

same issue

TinoGuo commented 3 months ago

it seems there is breaking change in recent flutter release, it works in 3.10.5.
to mitigate the issue, pls keep old version, I will try to fix it in next release

TinoGuo commented 3 months ago

from https://github.com/flutter/flutter/issues/150638, it seems this PR https://github.com/flutter/flutter/pull/143954 break the implementation and make it doesn't work, will leave flutter team to fix it.

kapibara91 commented 1 month ago

it also works on 3.22.3

TinoGuo commented 1 month ago

fixed in 4.5.2, test with latest flutter version and working fine, thx @dejunDev