A highly customisable Flutter widget for entering pin code. Suitable for use cases such as login and OTP.

Overview

Pub Awesome Flutter

pin_code_text_field

It's a beautiful and highly customizable Flutter widget for entering pin code. Suitable for use cases such as login and OTP.

Usage

Use this package as a library

  1. Depend on it Add this to your package's pubspec.yaml file:
dependencies:
  pin_code_text_field: <VERSION>
  1. Install it You can install packages from the command line: with Flutter:
$ flutter packages get

Alternatively, your editor might support flutter packages get. Check the docs for your editor to learn more.

  1. Import it Now in your Dart code, you can use:
import 'package:pin_code_text_field/pin_code_text_field.dart';

API

name type default description
isCupertino bool false Application wrapped in CupertinoApp instead MaterialApp
maxLength int 4 The total length of pin number & the number of pin boxes.
hideCharacter bool false Show or hide the pin code.
highlight bool false highlight the focused pin box.
highlightAnimation bool false animated highlight of the focused pin box.
highlightAnimationBeginColor Color Colors.black the starting color of the animated highlight.
highlightAnimationEndColor Color Color.white the ending color of the animated highlight.
highlightAnimationDuration Duration 500ms the duration of the highlight animation.
highlightColor Color Colors.black Set color of the focused pin box.
pinBoxDecoration BoxDecoration ProvidedPinBoxDecoration._defaultPinBoxDecoration Customization for the individual pin boxes. Check ProvidedPinBoxDecoration for possible options.
pinTextStyle TextStyle TextStyle for styling pin characters.
maskCharacter String "\u25CF" Special character to mask the pin code. Will only work if hideCharacter is set to true.
pinBoxHeight double 70.0 Height of pin boxes.
pinBoxWidth double 70.0 Width of pin boxes.
onDone void Function(String) Callback when the max length of pin code is reached.
hasTextBorderColor Color Colors.black Set color of pin box containing text.
pinTextAnimatedSwitcherTransition Function(Widget child, Animation animation) Animation of text appearing/disappearing, you can write your own or use a few presets: 1. PinCodeTextField.awesomeTransition 2. PinCodeTextField.defaultScalingTransition 3. PinCodeTextField.defaultRotateTransition
pinTextAnimatedSwitcherDuration Duration const Duration() Duration of pinTextAnimatedSwitcherTransition. Check ProvidedPinBoxTextAnimation for possible options.
errorBorderColor Color Colors.red Highlight all textboxes to this color if hasError is set to true
onTextChange Function(String) callback that returns a text on input
hasError bool false set all border color to errorBorderColor
autofocus bool false Autofocus on view entered
wrapAlignment WrapAlignment WrapAlignment.start Alignment of the wrapped pin boxes
textDirection TextDirection TextDirection.ltr The direction of the pin code
keyboardType TextInputType TextInputType.number The type of the input keyboard
pinBoxColor Color null Color of the pin boxes (Will be overridden by custom PinBoxDecoration)
pinBoxBorderWidth double 2 Border Width of pin boxes
pinBoxRadius double 0 The type of the input keyboard
hideDefaultKeyboard boolean false The type of hide default keyboard
highlightPinBoxColor Color false The background color of the pin box
hasUnderline bool false Added underline to individual pin box

Example

refer to example/lib/main.dart

Wishlist

  1. Localization (L-R, R-L)
  2. Highlight animation
  3. Pin Box animation
  4. BoxDecoratorBuilder for customizing individual pin boxes

Tips and Tricks:

  1. Copy and pasting Wrap the PinCodeTextField in GestureDetector, the launch an AlertDialog to access the Clipboard and paste the strings to the TextEditController of the PinCodeTextField

Contributors

  1. Liew Jun Tung
  2. Serge Shkurko
  3. Angga Dwi Arifandi
  4. MozesMa
  5. jpeiffer
  6. Thiago Porto
  7. Samuel

Star 🌟 to show support!

pin usage

pin usage

More information

Pub package Flutter documentation.

Comments
  • The named parameter 'pinCodeTextFieldLayoutType' isn't defined.

    The named parameter 'pinCodeTextFieldLayoutType' isn't defined.

    I have trying code as per example, getting error on following line:

    pinCodeTextFieldLayoutType: PinCodeTextFieldLayoutType.AUTO_ADJUST_WIDTH,

    Undefined name 'PinCodeTextFieldLayoutType'. The named parameter 'pinCodeTextFieldLayoutType' isn't defined.

    opened by sapnapositive 5
  • support LTR pin code on a RTL layout

    support LTR pin code on a RTL layout

    Thanks for the great plugin, awesome work! I am building an app that is RTL, and currently the pin code is RTL as well (because of the layout of the Row). In this fork, I have added a default of LTR text direction to the Row, which means it will now be LTR by default on RTL apps as well, with the option to control it.

    opened by MozesMa 4
  • BoxConstraints error

    BoxConstraints error

    I'm getting this issue in pin_code_text_field: ^1.3.2

    The following assertion was thrown during performLayout(): I/flutter ( 4573): BoxConstraints has a negative minimum height. I/flutter ( 4573): These invalid constraints were provided to RenderCustomPaint's layout() function by the following I/flutter ( 4573): function, which probably computed the invalid constraints in question: I/flutter ( 4573): _RenderDecoration.performLayout (package:flutter/src/material/input_decorator.dart:1081:17) I/flutter ( 4573): The offending constraints were: I/flutter ( 4573): BoxConstraints(w=0.1, h=-19.0; NOT NORMALIZED)

    opened by Ajit121 4
  • have tried to use widget at Web build but get error - Cannot hit test a render box that has never been laid out.

    have tried to use widget at Web build but get error - Cannot hit test a render box that has never been laid out.

    ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

    All log

    ══║ EXCEPTION CAUGHT BY RENDERING LIBRARY β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β• js_primitives.dart:29 The following assertion was thrown during performLayout(): js_primitives.dart:29 BoxConstraints has a negative minimum height. js_primitives.dart:29 The offending constraints were: js_primitives.dart:29 BoxConstraints(w=0.1, h=-4.0; NOT NORMALIZED) js_primitives.dart:29 js_primitives.dart:29 User-created ancestor of the error-causing widget was: js_primitives.dart:29 TextField org-dartlang-app:///packages/pin_code_text_field/pin_code_text_field.dart:338:14 js_primitives.dart:29 js_primitives.dart:29 When the exception was thrown, this was the stack: js_primitives.dart:29 package:build_web_compilers/src/dev_compiler/dart_sdk.js 3992:11 throw_ js_primitives.dart:29 package:flutter/src/rendering/box.dart 510:9 throwError js_primitives.dart:29 package:flutter/src/rendering/box.dart 541:19 js_primitives.dart:29 package:flutter/src/rendering/box.dart 557:14 debugAssertIsValid js_primitives.dart:29 package:flutter/src/rendering/object.dart 1624:23 layout js_primitives.dart:29 package:flutter/src%5Cmaterial%5Cinput_decorator.dart 1228:17 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 259:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/flex.dart 744:14 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/flex.dart 744:14 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/widgets/single_child_scroll_view.dart 497:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/custom_layout.dart 161:10 layoutChild js_primitives.dart:29 package:flutter/src%5Cmaterial%5Cscaffold.dart 477:7 performLayout js_primitives.dart:29 package:flutter/src/rendering/custom_layout.dart 231:7 [_callPerformLayout] js_primitives.dart:29 package:flutter/src/rendering/custom_layout.dart 392:14 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 1232:11 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 3140:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/stack.dart 505:14 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/proxy_box.dart 105:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1716:7 layout js_primitives.dart:29 package:flutter/src/rendering/view.dart 164:13 performLayout js_primitives.dart:29 package:flutter/src/rendering/object.dart 1584:7 [_layoutWithoutResize] js_primitives.dart:29 package:flutter/src/rendering/object.dart 844:17 flushLayout js_primitives.dart:29 package:flutter/src/rendering/binding.dart 340:19 drawFrame js_primitives.dart:29 package:flutter/src/widgets/binding.dart 777:13 drawFrame js_primitives.dart:29 package:flutter/src/rendering/binding.dart 279:5 [_handlePersistentFrameCallback] js_primitives.dart:29 package:flutter/src%5Cscheduler%5Cbinding.dart 1043:15 [_invokeFrameCallback] js_primitives.dart:29 package:flutter/src%5Cscheduler%5Cbinding.dart 982:9 handleDrawFrame js_primitives.dart:29 package:flutter/src%5Cscheduler%5Cbinding.dart 791:7 js_primitives.dart:29 package:build_web_compilers/src/dev_compiler/dart_sdk.js 28711:9 internalCallback js_primitives.dart:29 js_primitives.dart:29 The following RenderObject was being processed when the exception was fired: _RenderDecoration#fcae2 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE: js_primitives.dart:29 creator: _Decorator ← InputDecorator ← AnimatedBuilder ← _PointerListener ← Listener ← js_primitives.dart:29 RawGestureDetector ← TextSelectionGestureDetector ← Semantics ← AnimatedBuilder ← MouseRegion ← js_primitives.dart:29 IgnorePointer ← TextField ← β‹― js_primitives.dart:29 parentData: (can use size) js_primitives.dart:29 constraints: BoxConstraints(w=0.1, h=8.0) js_primitives.dart:29 size: MISSING js_primitives.dart:29 This RenderObject had the following descendants (showing up to depth 5): js_primitives.dart:29 input: RenderRepaintBoundary#ea3d1 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE js_primitives.dart:29 child: RenderRepaintBoundary#55b7a NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE js_primitives.dart:29 child: RenderCustomPaint#9b55a NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE js_primitives.dart:29 child: RenderRepaintBoundary#f9212 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE js_primitives.dart:29 child: RenderPointerListener#2a12a NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE js_primitives.dart:29 helperError: RenderConstrainedBox#de625 relayoutBoundary=up1 NEEDS-PAINT js_primitives.dart:29 counter: RenderSemanticsAnnotations#81185 relayoutBoundary=up1 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE js_primitives.dart:29 child: RenderSemanticsAnnotations#e0a83 relayoutBoundary=up2 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE js_primitives.dart:29 child: RenderExcludeSemantics#2fbc2 relayoutBoundary=up3 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE js_primitives.dart:29 child: RenderParagraph#0c8a0 relayoutBoundary=up4 NEEDS-PAINT js_primitives.dart:29 text: TextSpan js_primitives.dart:29 container: RenderCustomPaint#30e98 NEEDS-LAYOUT NEEDS-PAINT js_primitives.dart:29 ════════════════════════════════════════════════════════════════════════════════════════════════════ js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 errors.dart:145 Uncaught Error: Cannot hit test a render box that has never been laid out. The hitTest() method was called on this RenderBox: RenderStack#e39ff NEEDS-LAYOUT NEEDS-PAINT: creator: Stack ← _FloatingActionButtonTransition ← MediaQuery ← LayoutId-[<_ScaffoldSlot.floatingActionButton>] ← CustomMultiChildLayout ← AnimatedBuilder ← DefaultTextStyle ← AnimatedDefaultTextStyle ← _InkFeatures-[GlobalKey#4ea7c ink renderer] ← NotificationListener ← PhysicalModel ← AnimatedPhysicalModel ← β‹― parentData: offset=Offset(0.0, 0.0); id=ScaffoldSlot.floatingActionButton constraints: MISSING size: MISSING alignment: centerRight textDirection: ltr fit: loose overflow: clip Unfortunately, this object's geometry is not known at this time, probably because it has never been laid out. This means it cannot be accurately hit-tested. If you are trying to perform a hit test during the layout phase itself, make sure you only hit test nodes that have completed layout (e.g. the node's children, after their layout() method has been called). at Object.throw [as throw] (errors.dart:191) at box.dart:2102 at stack.RenderStack.new.hitTest (box.dart:2132) at box.dart:2488 at box.BoxHitTestResult.wrap.addWithRawTransform (box.dart:801) at box.BoxHitTestResult.wrap.addWithPaintOffset (box.dart:758) at custom_layout.RenderCustomMultiChildLayoutBox.new.defaultHitTestChildren (box.dart:2483) at custom_layout.RenderCustomMultiChildLayoutBox.new.hitTestChildren (custom_layout.dart:402) at custom_layout.RenderCustomMultiChildLayoutBox.new.hitTest (box.dart:2135) at material$._RenderInkFeatures.new.hitTestChildren (proxy_box.dart:114) at material$._RenderInkFeatures.new.hitTest (box.dart:2135) at proxy_box.RenderPhysicalModel.new.hitTestChildren (proxy_box.dart:114) at proxy_box.RenderPhysicalModel.new.hitTest (box.dart:2135) at proxy_box.RenderPhysicalModel.new.hitTest (proxy_box.dart:1722) at proxy_box.RenderSemanticsAnnotations.new.hitTestChildren (proxy_box.dart:114) at proxy_box.RenderSemanticsAnnotations.new.hitTest (box.dart:2135) at proxy_box.RenderRepaintBoundary.new.hitTestChildren (proxy_box.dart:114) at proxy_box.RenderRepaintBoundary.new.hitTest (box.dart:2135) at proxy_box.RenderIgnorePointer.new.hitTestChildren (proxy_box.dart:114) at proxy_box.RenderIgnorePointer.new.hitTest (box.dart:2135) at proxy_box.RenderIgnorePointer.new.hitTest (proxy_box.dart:3036) at proxy_box.RenderAnimatedOpacity.new.hitTestChildren (proxy_box.dart:114) at proxy_box.RenderAnimatedOpacity.new.hitTest (box.dart:2135) at proxy_box.RenderFractionalTranslation.new.hitTestChildren (proxy_box.dart:114) at proxy_box.dart:2453 at box.BoxHitTestResult.wrap.addWithRawTransform (box.dart:801) at box.BoxHitTestResult.wrap.addWithPaintOffset (box.dart:758) at proxy_box.RenderFractionalTranslation.new.hitTestChildren (proxy_box.dart:2447) at proxy_box.RenderFractionalTranslation.new.hitTest (proxy_box.dart:2433) at proxy_box.RenderRepaintBoundary.new.hitTestChildren (proxy_box.dart:114) at proxy_box.RenderRepaintBoundary.new.hitTest (box.dart:2135) at proxy_box.RenderSemanticsAnnotations.new.hitTestChildren (proxy_box.dart:114) at proxy_box.RenderSemanticsAnnotations.new.hitTest (box.dart:2135) at proxy_box.RenderOffstage.new.hitTestChildren (proxy_box.dart:114) at proxy_box.RenderOffstage.new.hitTest (box.dart:2135) at proxy_box.RenderOffstage.new.hitTest (proxy_box.dart:3146) at box.dart:2488 at box.BoxHitTestResult.wrap.addWithRawTransform (box.dart:801) at box.BoxHitTestResult.wrap.addWithPaintOffset (box.dart:758) at stack.RenderStack.new.defaultHitTestChildren (box.dart:2483) at stack.RenderStack.new.hitTestChildren (stack.dart:580) at stack.RenderStack.new.hitTest (box.dart:2135) at overlay$._RenderTheatre.new.hitTestChildren (proxy_box.dart:114) at overlay$._RenderTheatre.new.hitTest (box.dart:2135) at proxy_box.RenderSemanticsAnnotations.new.hitTestChildren (proxy_box.dart:114) at proxy_box.RenderSemanticsAnnotations.new.hitTest (box.dart:2135) at proxy_box.RenderAbsorbPointer.new.hitTestChildren (proxy_box.dart:114) at proxy_box.RenderAbsorbPointer.new.hitTest (box.dart:2135) at proxy_box.RenderAbsorbPointer.new.hitTest (proxy_box.dart:3244) at proxy_box.RenderPointerListener.new.hitTestChildren (proxy_box.dart:114) at proxy_box.RenderPointerListener.new.hitTest (proxy_box.dart:161) at custom_paint.RenderCustomPaint.new.hitTestChildren (proxy_box.dart:114) at custom_paint.RenderCustomPaint.new.hitTestChildren (custom_paint.dart:508) at custom_paint.RenderCustomPaint.new.hitTest (box.dart:2135) at proxy_box.RenderSemanticsAnnotations.new.hitTestChildren (proxy_box.dart:114) at proxy_box.RenderSemanticsAnnotations.new.hitTest (box.dart:2135) at view.RenderView.new.hitTest (view.dart:184) at binding$5.WidgetsFlutterBinding.new.hitTest (binding.dart:363) at binding$5.WidgetsFlutterBinding.new.[_handlePointerEvent] (binding.dart:128) at binding$5.WidgetsFlutterBinding.new.[_flushPointerEventQueue] (binding.dart:102) at binding$5.WidgetsFlutterBinding.new.[_handlePointerDataPacket] (binding.dart:86) at engine.PointerBinding.new.[_onPointerData] (pointer_binding.dart:87) at pointer_binding.dart:188 at HTMLElement. (pointer_binding.dart:146) DartError @ errors.dart:145 throw @ errors.dart:191 (anonymous) @ box.dart:2102 hitTest @ box.dart:2132 (anonymous) @ box.dart:2488 addWithRawTransform @ box.dart:801 addWithPaintOffset @ box.dart:758 defaultHitTestChildren @ box.dart:2483 hitTestChildren @ custom_layout.dart:402 hitTest @ box.dart:2135 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTest @ proxy_box.dart:1722 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTest @ proxy_box.dart:3036 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTestChildren @ proxy_box.dart:114 (anonymous) @ proxy_box.dart:2453 addWithRawTransform @ box.dart:801 addWithPaintOffset @ box.dart:758 hitTestChildren @ proxy_box.dart:2447 hitTest @ proxy_box.dart:2433 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTest @ proxy_box.dart:3146 (anonymous) @ box.dart:2488 addWithRawTransform @ box.dart:801 addWithPaintOffset @ box.dart:758 defaultHitTestChildren @ box.dart:2483 hitTestChildren @ stack.dart:580 hitTest @ box.dart:2135 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTest @ proxy_box.dart:3244 hitTestChildren @ proxy_box.dart:114 hitTest @ proxy_box.dart:161 hitTestChildren @ proxy_box.dart:114 hitTestChildren @ custom_paint.dart:508 hitTest @ box.dart:2135 hitTestChildren @ proxy_box.dart:114 hitTest @ box.dart:2135 hitTest @ view.dart:184 hitTest @ binding.dart:363 [_handlePointerEvent] @ binding.dart:128 [_flushPointerEventQueue] @ binding.dart:102 [_handlePointerDataPacket] @ binding.dart:86 [_onPointerData] @ pointer_binding.dart:87 (anonymous) @ pointer_binding.dart:188 (anonymous) @ pointer_binding.dart:146 Show 35 more frames js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: BoxConstraints has a negative minimum height. js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/object.dart:1651:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: BoxConstraints has a negative minimum height. js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/object.dart:1651:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: BoxConstraints has a negative minimum height. js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/object.dart:1651:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: BoxConstraints has a negative minimum height. js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/object.dart:1651:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: BoxConstraints has a negative minimum height. js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/object.dart:1651:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12 js_primitives.dart:29 Another exception was thrown: BoxConstraints has a negative minimum height. js_primitives.dart:29 Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/rendering/box.dart:1687:12

    opened by alex89607 3
  • show entire code when pasting

    show entire code when pasting

    on iOS device when you start an OTP flow (SMS verification) and you get the SMS, the keyboard will suggest the use the code from the SMS, tapping that suggestion will paste the code in the PinCodeTextField.

    the logic works, but visually in this case you will only see the last digit on the last place, and the rest of the fields will remain empty.

    this fix makes it so whenever a text is change it will fill all of the input text from the last known position up to the text.length, therefore resolving the above issue

    opened by MozesMa 3
  • 1.3.7: Exception: TextEditingController can only contains numeric

    1.3.7: Exception: TextEditingController can only contains numeric

    Hi, When clicking on a special character on a numeric keyboard (like comma, dot or "-") the following exception is raised and its not possible to work with the control. Desired behavior: it should ignore non-numeric characters completely. Can you please fix it soon? Thanks!

    ══║ EXCEPTION CAUGHT BY FOUNDATION LIBRARY β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β• I/flutter (17864): The following _Exception was thrown while dispatching notifications for TextEditingController: I/flutter (17864): Exception: TextEditingController can only contains numeric I/flutter (17864): I/flutter (17864): When the exception was thrown, this was the stack: I/flutter (17864): #0 PinCodeTextFieldState._initTextController package:pin_code_text_field/pin_code_text_field.dart:237 I/flutter (17864): #1 PinCodeTextFieldState.initState.<anonymous closure>.<anonymous closure>

    opened by tigrenok00 3
  • Getting error dispose

    Getting error dispose

    @LiewJunTung I/flutter ( 8091): ══║ EXCEPTION CAUGHT BY WIDGETS LIBRARY β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β• I/flutter ( 8091): The following assertion was thrown building NotificationListener: I/flutter ( 8091): A TextEditingController was used after being disposed. I/flutter ( 8091): Once you have called dispose() on a TextEditingController, it can no longer be used.

    opened by Raviteja11122 3
  • Change specific cell input value

    Change specific cell input value

    Hi, The only way to change the entered values is to use clear button, as it seems. Is there an option to change value of specific cell when clicked? (Click a cell, show it as selected, override value by typing a new number, and shift the focus to the next cell). Thanks!

    opened by tigrenok00 2
  • Added custom focus node capabilities

    Added custom focus node capabilities

    I added the ability to pass in a custom FocusNode so callers could reuse the PIN field after submit. This same PIN field is really handy for fixed integer inputs that are not pins.

    I also fixed an issue that would trigger a stack trace when a text controller was passed in, but the onTextChanged was not.

    opened by jpeiffer 2
  • Implement copy paste

    Implement copy paste

    Do you have an idea on how I can implement a copy-paste feature ? I would like the user to be able to copy a string a be able to paste it into this widget.

    opened by g-balas 2
  • How to Import this?

    How to Import this?

    I'm new to flutter and I want to ask how to import this? I've add this to my pubspec:

    dependencies:
      flutter:
        sdk: flutter
      pin_code_text_field:
        git:
          url: git://github.com/LiewJunTung/pin_code_text_field.git
    

    but I don't know how to import it and use PinCodeEntryField. Does anyone know how?

    opened by firdarinoa 2
  • Disable longPress without using

    Disable longPress without using "enable" parameters

    Describe the bug I can't disable longPress gesture detector without affecting the textformfield

    To Reproduce

    Positioned(
                  top: 0,
                  left: 0,
                  right: 0,
                  child: GestureDetector(
                    onTap: () {
                      if (widget.onTap != null) widget.onTap!();
                      _onFocus();
                    },
                    onLongPress: widget.enabled
                        ? () async {
                            var data = await Clipboard.getData("text/plain");
                            if (data?.text?.isNotEmpty ?? false) {
                              if (widget.beforeTextPaste != null) {
                                if (widget.beforeTextPaste!(data!.text)) {
                                  _showPasteDialog(data.text!);
                                }
                              } else {
                                _showPasteDialog(data!.text!);
                              }
                            }
                          }
                        : null,`
    
    opened by Harrys76 0
  • When setting both, onTextChanged and Controller the onTextChanged callback is called twice

    When setting both, onTextChanged and Controller the onTextChanged callback is called twice

    Describe the bug When we set a callback for onTextChanged and a controller the callback is called twice.

    To Reproduce example code:

    import 'package:flutter/material.dart';
    import 'package:pin_code_text_field/pin_code_text_field.dart';
    
    void main() {
      runApp(const MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({Key? key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: const MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      const MyHomePage({Key? key, required this.title}) : super(key: key);
    
      final String title;
    
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      TextEditingController _controller = TextEditingController();
    
      @override
      void initState() {
        super.initState();
      }
    
      @override
      void dispose() {
        _controller.dispose();
        super.dispose();
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: const Text('Connectivity example app'),
          ),
          body: Center(
            child: PinCodeTextField(
              onTextChanged: onTextChanged, //widget.onTextChanged,
              controller: _controller,
              pinBoxColor: Colors.transparent,
              pinBoxBorderWidth: 1.0,
              pinBoxOuterPadding: const EdgeInsets.all(2.5),
              pinBoxWidth: 40,
              pinBoxHeight: 40,
              pinBoxRadius: 2.0,
              focusNode: FocusNode(),
            ),
          ),
        );
      }
    
      void onTextChanged(String value) {
        print('value: $value');
      }
    }
    

    Expected behavior We can set the controller and the callback and when the text changes, the callback is only called once.

    ** flutter doctor ** Doctor summary (to see all details, run flutter doctor -v): [βœ“] Flutter (Channel stable, 2.10.3, on macOS 12.1 21C52 darwin-x64, locale en-US) [βœ“] Android toolchain - develop for Android devices (Android SDK version 32.0.0) [βœ“] Xcode - develop for iOS and macOS (Xcode 13.2.1) [βœ“] Chrome - develop for the web [βœ“] Android Studio (version 2020.3) [βœ“] VS Code (version 1.65.1) [βœ“] Connected device (3 available) [βœ“] HTTP Host Availability

    opened by carlos-enzo 0
  • Backspace doesn't delete the number

    Backspace doesn't delete the number

    Describe the bug The backspace should delete the number.

    To Reproduce Simplest example:

    PinCodeTextField();
    
    1. Type numbers
    2. Press backspace

    Expected behavior The numbers are deleted

    Actual behavior The numbers stay the same. The focus does change properly.

    Flutter 2.5.2, Android.

    opened by itsJoKr 1
Owner
Liew Jun Tung
Senior Mobile Developer at NetVirta, Inc. Google Developer Groups Singapore
Liew Jun Tung
I am trying to teach Responsive Ui design. This video for Web and Mobile. This design is suitable for Desktop, Tab, and Mobile platforms.

before clone the GitHub repository please give a star on the repository. I am trying to teach Responsive Ui design. This video for Web and Mobile. Thi

Blackshadow Software Ltd 22 Sep 1, 2022
A package to help build customisable timelines in Flutter.

TimelineTile A package to help build customisable timelines in Flutter. Example You can access the example project for a Timeline Showcase. The Beauti

null 549 Jan 6, 2023
Login-page-ui - Login Page UI using Flutter

mobile-login-page-ui Getting Started This project is a starting point for a Flut

Dewa Mahendra 4 Nov 15, 2022
LoginUIDesign is login beautiful module. login module segregate in different steps on bases of data required.

LoginUiDesign You can Install and test latest LoginUiDesign app from below ?? LoginUIDesign is login beautiful module. login module segregate in diffe

Deepak Sharma 2 Nov 22, 2021
The most complete Chat UI for flutter highly customizable and helps developing chat UI faster.

⚠️ Dashchat v2 is available in v2 branch ⚠️ You can open issues for the v2 to indicate things we need to implement/fix. Also the API can change until

Fayeed Pawaskar 432 Dec 11, 2022
A vector tile renderer for use in creating map tile images or writing to a canvas. Written in Dart to enable use of vector tiles with Flutter.

vector_tile_renderer A vector tile renderer for use in creating map tile images or writing to a canvas. Written in Dart to enable use of vector tiles

David Green 30 Oct 7, 2022
Flutter Beautiful Login Page design and Animation - day 12

Flutter Beautiful Login Page design and Animation - day 12

Mohammad Rahmani 296 Jan 1, 2023
A ecommerce app created in flutter implementing the features add to cart, total ,add, remove item and a login function

catalog A new Flutter application. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if t

null 0 Nov 27, 2021
πŸ› A full E-commerce app with nice UI consists of on-boarding, login, sign-up, home, product details, cart and user profile.

?? A full E-commerce app with nice UI consists of on-boarding, login, sign-up, home, product details, cart and user profile.

null 56 Nov 27, 2022
A simple UI design with Login, Sign up and Home screens

assessment_task A simple UI design with Login, Sign up and Home screens. ?? ScreenShots If you find this repo helpful to you, please don't forget to s

Promise Amadi 7 Nov 2, 2022
A Flutter project that gives basic flutter design to implement a login UI

Login UI Design A Flutter project that gives basic flutter design to implement a

CABREX 9 Nov 8, 2022
Flutter Beautiful Login Signup UI

Flutter Beautiful Login Signup UI

Mohamed Ben Halima 14 Oct 19, 2022
Beautiful Login Page In Flutter

Beautiful Login Page In Flutter Create a login and signup page in flutter. This amazing app is provided in open source. So, helpful contributions are

null 6 Sep 22, 2022
Cross Platform Login UI design using Flutter.

Flutter Login UI It's a #SpeedCode tutorial for Flutter #Login #UI project with splash screen and multiple color support.

Flutter Tutorial 82 Dec 14, 2022
Login & Sign Up UI using Flutter

Login & Sign Up UI using Flutter Preview ⚠️ Essential Packages font_awesome_flut

AmirHossein Bayat 11 Jan 1, 2023
DirectSelect is a selection widget with an ethereal, full-screen modal popup displaying the available choices when the widget is interact with. https://dribbble.com/shots/3876250-DirectSelect-Dropdown-ux

direct-select-flutter DirectSelect is a selection widget with an ethereal, full-screen modal popup displaying the available choices when the widget is

null 582 Jan 4, 2023
WooCommerce API - E-commerce Flutter v2.0 / USE block and architecture

Sonoff sonoffkz App - Woocommerce API Description Моя вторая вСрсия ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ: ΠΏΡ€ΠΈ использовании стСйт ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΠΌΠ΅Π½Ρ‚Π° BLoC ΠΈ ΡƒΠ΄ΠΎΠ±Π½

Maximus Edward An 1 May 10, 2022
Code generation for Flutter Padding widgets based on your constants

Paddinger Paddinger is a Flutter package to generate Padding widgets. Given a set of constants like: @paddinger const double PADDING_NORMAL = 8; A set

Emanuele 14 Oct 20, 2022
Code for the screens created with flutter

FlutterUI-Emojis Code for the screens created with Flutter. Design Credit - https://dribbble.com/shots/9094050-Online-Reservation/attachments/1177787?

Raja Yogan 55 Oct 27, 2022