Code Monkey home page Code Monkey logo

flutter_tags's People

Contributors

alarmatwork avatar dn-a avatar sterrenb avatar vitaly-v avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flutter_tags's Issues

autofocus: false does not allow the keyboard to open

I need to set autofocus to false because I am using it in a form with other text fields and I don't want to focus on tags as it is at the end of the form. However, when I set that to false, when tapping on new tags text field, it comes out of focus immediately and closes the keyboard before user get a chance to type anything.

text field start

Is it possible to have the text field before tags ?
I saw in demo that feature, but i can't find id in properties.
Thanx

Maximum selection

Hi, thank you for this awesome tags library. Is there any parameter for the maximum N number so user can not select more than given number of tags?

In our app, we are allowing user to select 3 interests from given 400 interests in popup. Once 3 tags get selected, how to load them with active states once popup shows again?

Thank you!

CircleAvatar of image

image property is too much limited! it would be better if you change
final ItemTagsImage image;
to
final widget image;
or at least put some option to enable/disable CircleAvatar!

thanks for your awesome library

SelectableTags is not rebuilt

I have two separated SelectableTags, I just want one of them to be displayed on at a time depends on given criteria named '_category'. the problem is whenever the '_category' changed, the first SelectableTags is always displayed. Noted that if I replace SelectableTags to another widget like 'Text', the logic works fine.

Can someone help me here? and sorry for my bad English.

import 'package:flutter/material.dart';
import 'package:flutter_tags/selectable_tags.dart';

class XYZState extends State<XYZWidget> {

  String _category = 'Clothing';
  List<Tag> _tagsBooks = [];
  List<Tag> _tagsClothing = [];

  @override
  void initState() {
    super.initState();

    _tagsBooks = ['fantacy', 'comic'].map((s) => Tag(title: s, active: false)).toList().cast<Tag>();
    _tagsClothing = ['shirt', 'coat'].map((s) => Tag(title: s, active: false)).toList().cast<Tag>();
  }

  void _onCategoryChange(String selectedCategory) {
    setState(() {
      _category = selectedCategory;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SingleChildScrollView(
        child: Padding(
            padding: new EdgeInsets.all(20.0),
              child: Form(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: <Widget>[
                    DropdownButton<String>(
                      items: ['Clothing', 'Books'].map((c) => DropdownMenuItem<String>(
                        value: '$c',
                        child: Text('$c'),
                      )).toList(),
                      value: _category,
                      onChanged: _onCategoryChange,
                    ),
                    _category == 'Clothing' 
                        ? SelectableTags(
                            tags: _tagsBooks,
                            columns: 3,
                            symmetry: true, // default false
                            onPressed: (t) {
                              print(t.toString());
                            },
                          )
                        : SelectableTags(
                            tags: _tagsClothing,
                            columns: 3, // default 4
                            symmetry: true, // default false
                            onPressed: (t) {
                              print(t.toString());
                            },
                        ),
                  ],
                )
              )
            )
        )
    );
  }
}

Do not allow white spaces in the middle of a tag

Hello, thanks for the Package, it is working great!

I need to create tags like hashtags with no spaces, I know how to trim the input of the user, but I would like to not allow the user to input a tag with white spaces in the middle, I think a way to achieve this is to fire onSubmitted when the user press the space bar.
Anyone can help me to achieve this? I've been looking for a solution with no results.

Thanks in advance,
Fer

Auto Complete

Actually it is not an issue but a wish :)

Is it possible to implement auto complete or suggestion feature for tags?

Purposes of popupMenuBuilder and popupMenuOnSelected on SelectableTags

Hi! Please let me know if questions like this can be better answered elsewhere, but I was hoping to learn more about the purposes of popupMenuBuilder and popupMenuOnSelected on SelectableTags. What are the sole purposes of those and where can I see the examples/demos using such options? I noticed that the example snippet of code on README.md makes use of those options, but I simply do not see the differences with/without those options in my application. I read the documentation as well, but it simply says Popup Menu Items.

Any help would be appreciated. Thanks!

Inside FutureBuilder is not working

Inside the futurebuilder it's not working.when i'trying with futurebuilder after getting response inside the connectionState.done again call future method again and again.
Code:-
return FutureBuilder(
future: Connection.getinterestApi(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
// TODO: Handle this case.
break;
case ConnectionState.waiting:
return Center(
child: new CircularProgressIndicator(
strokeWidth: 2.0,
),
);
break;
case ConnectionState.active:
// TODO: Handle this case.
break;
case ConnectionState.done:*/
/if (snapshot.hasError)
{
return Center(child: new Text('Server error !'));
} else if (snapshot.data.data.length == 0) {
return Center(
child: new Text(
'No record found',
style: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold),
));
} else {
/
return Container(
height: constraints.maxHeight * 0.85,
padding: EdgeInsets.only(bottom: 20.0),
child: /ListView(shrinkWrap: true,
children: [
/
Tags(
key: _tagStateKey,
itemCount: interestList.length,
alignment: WrapAlignment.start,
columns: 3,
spacing: 12.0,
runSpacing: 12.0,
itemBuilder: (int index) {
return ItemTags(
active: false,
elevation: 1.0,
borderRadius: BorderRadius.circular(5.0),
border: Border.all(color: Colors.transparent),
index: index,
textStyle: TextStyle(fontSize: 16.0),
// req
activeColor: CustomColors.primaryColor,
color: CustomColors.tagdefault_Color,
key: Key(DateTime.now().toIso8601String()),
title: 'hello');
},
)
])
);
}
break;
}
}
);

Breaking changes

Hi!

Awesome package, but keep in mind that breaking changes should be handled with great care. Make sure you read the semantic versioning documentation.
https://semver.org/

There is also a dart package that tells you the break breaking version that you should use when releasing a change like this in your api surface.
https://pub.dev/packages/pub_semver

The truth about "active" tag

Hi @Dn-a Great work with the new ^0.4.7 flutter_tags version !!!
It seems that the active property is not working when we need to activate a specific tag programatically. For example : active: (index == 1) ? true : false, does not activate the 1st Tag only.

Here is a short example that works with no errors... I was expecting that one of the tags is already activated when the app starts... but none is activated until we select one... how can we specify the selected/active tag in the code?

----Complete Code using: flutter_tags: "^0.4.7":-------

import 'package:flutter/material.dart';
import 'package:flutter_tags/flutter_tags.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: MyTags(),
        ),),);}
}

class MyTags extends StatefulWidget {
  @override
   MyTagsState createState() => MyTagsState();
}


class MyTagsState extends State<MyTags> {
  List<String> _myTagsList=[];

  @override
  void initState() {
    super.initState();
    _myTagsList.addAll(["Tag1", "Tag2", "Tag3", "Tag4"]);
  }

  @override
  Widget build(BuildContext context) {
    return _myTags();
  }

  Tags _myTags() {
    return Tags(
      itemCount: _myTagsList.length,
      itemBuilder: (int index) {
        return ItemTags(
          key: Key(index.toString()),
          index: index,
          title: _myTagsList[index].toString(),
          singleItem: true,
          active: (index == 1) ? true : false,
        );},);
  }
}

Feature wish: drag and drop

Drag and drop to reorder elements would make it even more sexier. :-) That would be soooo cool.

BTW, thanks for this beauty :-)

Feature Request: Add controller for Tags

It would be very nice if a controller can be called to get the list of active ItemTags. Currently, I have to store the list of active tags in a separate List variable.

I want to add no matched tag when using suggestions

I think this is very good package!!

I want to ask, why I can't add no matched tag when using suggestions?
Is there are reason that you can't do?

I think, this "if" is prevent to do that
https://github.com/Dn-a/flutter_tags/blob/master/lib/src/suggestions_textfield.dart#L135
and
https://github.com/Dn-a/flutter_tags/blob/master/lib/src/suggestions_textfield.dart#L128
change to be

    if (_suggestions != null && _matches.length > 0) str = _matches.first;

thank you!

Could not read input channel file descriptors from parcel

E/InputChannel-JNI(27717): Error 24 dup channel fd 0.
E/MethodChannel#flutter/textinput(27717): Failed to handle method call
E/MethodChannel#flutter/textinput(27717): java.lang.RuntimeException: Could not read input channel file descriptors from parcel.
E/MethodChannel#flutter/textinput(27717): at android.view.InputChannel.nativeReadFromParcel(Native Method)
E/MethodChannel#flutter/textinput(27717): at android.view.InputChannel.readFromParcel(InputChannel.java:148)
E/MethodChannel#flutter/textinput(27717): at android.view.InputChannel$1.createFromParcel(InputChannel.java:39)
E/MethodChannel#flutter/textinput(27717): at android.view.InputChannel$1.createFromParcel(InputChannel.java:36)
E/MethodChannel#flutter/textinput(27717): at com.android.internal.view.InputBindResult.(InputBindResult.java:62)
E/MethodChannel#flutter/textinput(27717): at com.android.internal.view.InputBindResult$1.createFromParcel(InputBindResult.java:102)
E/MethodChannel#flutter/textinput(27717): at com.android.internal.view.InputBindResult$1.createFromParcel(InputBindResult.java:99)
E/MethodChannel#flutter/textinput(27717): at com.android.internal.view.IInputMethodManager$Stub$Proxy.startInput(IInputMethodManager.java:664)
E/MethodChannel#flutter/textinput(27717): at android.view.inputmethod.InputMethodManager.startInputInner(InputMethodManager.java:1280)
E/MethodChannel#flutter/textinput(27717): at android.view.inputmethod.InputMethodManager.restartInput(InputMethodManager.java:1167)
E/MethodChannel#flutter/textinput(27717): at io.flutter.plugin.editing.TextInputPlugin.setTextInputEditingState(TextInputPlugin.java:209)
E/MethodChannel#flutter/textinput(27717): at io.flutter.plugin.editing.TextInputPlugin.onMethodCall(TextInputPlugin.java:61)
E/MethodChannel#flutter/textinput(27717): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:201)
E/MethodChannel#flutter/textinput(27717): at io.flutter.view.FlutterNativeView$PlatformMessageHandlerImpl.handleMessageFromDart(FlutterNativeView.java:188)
E/MethodChannel#flutter/textinput(27717): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:202)
E/MethodChannel#flutter/textinput(27717): at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#flutter/textinput(27717): at android.os.MessageQueue.next(MessageQueue.java:138)
E/MethodChannel#flutter/textinput(27717): at android.os.Looper.loop(Looper.java:131)
E/MethodChannel#flutter/textinput(27717): at android.app.ActivityThread.main(ActivityThread.java:5602)
E/MethodChannel#flutter/textinput(27717): at java.lang.reflect.Method.invokeNative(Native Method)
E/MethodChannel#flutter/textinput(27717): at java.lang.reflect.Method.invoke(Method.java:515)
E/MethodChannel#flutter/textinput(27717): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
E/MethodChannel#flutter/textinput(27717): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
E/MethodChannel#flutter/textinput(27717): at dalvik.system.NativeStart.main(Native Method)
E/flutter (27717): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: PlatformException(error, Could not read input channel file descriptors from parcel., null)
E/flutter (27717): #0 JSONMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:149:7)
E/flutter (27717): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:302:33)
E/flutter (27717):
E/flutter (27717): #2 OptionalMethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:410:36)
E/flutter (27717):
E/flutter (27717): #3 TextInputConnection.setEditingState (package:flutter/src/services/text_input.dart:637:30)
E/flutter (27717): #4 EditableTextState._openInputConnection (package:flutter/src/widgets/editable_text.dart:847:10)
E/flutter (27717): #5 EditableTextState._openOrCloseInputConnectionIfNeeded (package:flutter/src/widgets/editable_text.dart:862:7)
E/flutter (27717): #6 EditableTextState._handleFocusChanged (package:flutter/src/widgets/editable_text.dart:1103:5)
E/flutter (27717): #7 ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:206:21)
E/flutter (27717): #8 FocusNode._notify (package:flutter/src/widgets/focus_manager.dart:103:5)
E/flutter (27717): #9 FocusManager._update (package:flutter/src/widgets/focus_manager.dart:464:20)
E/flutter (27717): #10 _rootRun (dart:async/zone.dart:1120:38)
E/flutter (27717): #11 _CustomZone.run (dart:async/zone.dart:1021:19)
E/flutter (27717): #12 _CustomZone.runGuarded (dart:async/zone.dart:923:7)
E/flutter (27717): #13 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:963:23)
E/flutter (27717): #14 _rootRun (dart:async/zone.dart:1124:13)
E/flutter (27717): #15 _CustomZone.run (dart:async/zone.dart:1021:19)
E/flutter (27717): #16 _CustomZone.runGuarded (dart:async/zone.dart:923:7)
E/flutter (27717): #17 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:963:23)
E/flutter (27717): #18 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter (27717): #19 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)

the method of selectable tags is called every second

I have put some log at the start of the build and it seems to be called every second.

I/flutter (27503): build selectableTags []
I/flutter (27503): build selectableTags []
I/chatty (27503): uid=10085(eu.delperdange.pmp_app) Thread-3 identical 158 lines
I/flutter (27503): build selectableTags []
I/flutter (27503): build selectableTags []
I/chatty (27503): uid=10085(eu.delperdange.pmp_app) Thread-3 identical 148 lines
I/flutter (27503): build selectableTags []
I/flutter (27503): build selectableTags []
I/chatty (27503): uid=10085(eu.delperdange.pmp_app) Thread-3 identical 133 lines
I/flutter (27503): build selectableTags []
I/flutter (27503): build selectableTags []
I/chatty (27503): uid=10085(eu.delperdange.pmp_app) Thread-3 identical 163 lines
I/flutter (27503): build selectableTags []
I/flutter (27503): build selectableTags []

Correction to the Example

I tried to use the example provided in the readme and it didn't work, after digging around I noticed that what you actually need instead of

setState(() {
              // required
            _items.add(str);
          });

is

setState(() {
              // required
             
            _items.add(Item(
                title: str,
                active: true,
                index: 1,
                
              ));
          });

It might help others out.

When tag list is empty then _buildField throws an unhandled exception

To replicate, you should just be able to pass an empty List as tags.

      InputTags(
        tags: [],
        onDelete: () {},
        onInsert: () {}
      )

The error given is:

Unhandled exception:
Unsupported operation: Infinity or NaN toInt
#0      double.toInt (dart:core/runtime/libdouble.dart:178:36)
#1      double.ceil (dart:core/runtime/libdouble.dart:149:32)
#2      _InputTagsState.Eval (evaluate:source)
#3      _InputTagsState._buildField (package:flutter_tags/input_tags.dart:213:24)

You can also replicate by deleting all tags, which prints out this error.

flutter: Another exception was thrown: Unsupported operation: Infinity or NaN toInt

Lazy loading tags

Hi. Thank you for great library for tags in Flutter. In my app I am allowing users to select tags from predefined tags. There are about 400 Tags in my app. But its quite take much time to load widget (Tags) in my app. Is there any specific reason OR limit for tags?

More info : I am not showing any specific images within tags. Just String title.

Limitations while selecting tag

Can anyone please help me how do we limit the selection of tags like I just want to add 3 tags if user going to add more than 3 tags then it will show some error message. When I am trying this I am not able to restrict user while selecting tags more than 3.

Id is int

Usually Id is a string type
Can you update it to String?

onInsert and onDelete confusing and difficult to manage

I find the onInsert and onDelete implementation difficult to manage because it changes the input tags field and also triggers to inform the parent component on an insert or on a delete.
This means you cannot set it with a contructor field from the parent (which should be final)
For me the input tags fields should be immutable and then

onInsert returns the the added
onDelete returns the deleted
eventually onChange return the complete changed list of tags

duplicate values in Textfield.

Entered values shows up twice on the textfield.
But logging the content of my String array after onInsert callback, shows no duplicate values from the array.
N/B: duplicate is set to false too.

How to force rebuild of Tags when active state has changed?

I have 3 Tags widgets on a page and the active state of the items in each widget is controlled by a _selectedTags list in the stateful parent widget state.

If I update this list using setState (via OnPressed) the only widget that updates is one that is pulling its content directly from _selectedTags (ie. the length of this list has changed which seems to force a rebuild), the other two widgets are not updating even though the value that controls "active" for the tag items has changed.

Is there anyway to force the other Tags widgets to rebuild to show the new active states?

Hope this makes sense!

singleItem not working with multi-tags!

          SelectTags(tags: _form),
          Divider(height: 1.0, indent: 0.0),
          SelectTags(tags: _type),
          Divider(height: 1.0, indent: 0.0),
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_tags/flutter_tags.dart';

class SelectTags extends StatefulWidget {
  final Map<String, String> tags;

  const SelectTags({Key key, this.tags}) : super(key: key);

  @override
  _SelectTagsState createState() => _SelectTagsState(tags);
}

class _SelectTagsState extends State<SelectTags> {
  final Map<String, String> tags;

  _SelectTagsState(this.tags);

  bool _symmetry = false;
  bool _startDirection = false;
  bool _horizontalScroll = true;
  int _column = 0;
  double _fontSize = 16;

  ItemTags _buildTagItem(Map<String,String> tags, index) {
    final item = tags.keys.elementAt(index);
    
    return ItemTags(
      key: Key(index.toString()),
      index: index,
      elevation: 0,
      title: item,
      active: false,
      singleItem: true,
      textColor: Colors.grey,
      textActiveColor: Colors.white,
      customData: item,
      color: Colors.white,
      activeColor: Colors.green[400],
      textScaleFactor: utf8.encode(item.substring(0, 1)).length > 2 ? 0.8 : 1,
      textStyle: TextStyle(fontSize: _fontSize),
      pressEnabled: true,
      onPressed: (_item) {

      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Container(
          margin: EdgeInsets.all(5),
          child: Tags(
              symmetry: _symmetry,
              columns: _column,
              horizontalScroll: _horizontalScroll,
              verticalDirection: _startDirection
                  ? VerticalDirection.up
                  : VerticalDirection.down,
              textDirection:
                  _startDirection ? TextDirection.rtl : TextDirection.ltr,
              heightHorizontalScroll: 35 * (_fontSize / 14),
              itemCount: tags.entries.length,
              alignment: WrapAlignment.start,
              itemBuilder: (index) => _buildTagItem(tags, index)));
  }
}

when i click the tags in first SelectTags, it working, but not working in second SelectTags!

Exception when using input decorator around InputTags

In fact i would like to put an input decorator around the complete widget, so that i can draw a border around it and also toggle enable to make it read-only

 return Padding(
        padding: EdgeInsets.all(15.0),
        child: InputDecorator(
          decoration: InputDecoration(
            // icon: const Icon(Icons.color_lens),
            labelText: 'Duration',
            labelStyle: textStyle,
            enabled: true,
            border:
            OutlineInputBorder(borderRadius: BorderRadius.circular(5.0)),
          ),
          child: InputTags(
              tags: _tags,
              suggestionsList: _suggestionsList,
              onDelete: widget.onDelete,
              onInsert: widget.onInsert,
            ),
        ),
        );

But then i get this error

Initializing hot reload...
Syncing files to device Android SDK built for x86 64...
Reloaded 6 of 506 libraries in 3.025ms.
I/flutter (12150): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (12150): The following assertion was thrown during performLayout():
I/flutter (12150): not implemented
I/flutter (12150): 'package:flutter/src/material/input_decorator.dart': Failed assertion: line 977 pos 12: 'false'
I/flutter (12150): 
I/flutter (12150): Either the assertion indicates an error in the framework itself, or we should provide substantially
I/flutter (12150): more information in this error message to help you determine and fix the underlying cause.
I/flutter (12150): In either case, please report this assertion by filing a bug on GitHub:
I/flutter (12150):   https://github.com/flutter/flutter/issues/new?template=BUG.md
I/flutter (12150): 
I/flutter (12150): When the exception was thrown, this was the stack:
I/flutter (12150): #2      _RenderDecoration.computeDistanceToActualBaseline (package:flutter/src/material/input_decorator.dart:977:12)
I/flutter (12150): #3      RenderBox.getDistanceToActualBaseline.<anonymous closure> (package:flutter/src/rendering/box.dart:1672:50)
I/flutter (12150): #4      __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent (dart:collection/runtime/libcompact_hash.dart:281:23)
I/flutter (12150): #5      RenderBox.getDistanceToActualBaseline (package:flutter/src/rendering/box.dart:1672:22)
I/flutter (12150): #6      _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.computeDistanceToActualBaseline (package:flutter/src/rendering/proxy_box.dart:98:20)
I/flutter (12150): #7      RenderBox.getDistanceToActualBaseline.<anonymous closure> (package:flutter/src/rendering/box.dart:1672:50)
I/flutter (12150): #8      __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent (dart:collection/runtime/libcompact_hash.dart:281:23)
I/flutter (12150): #9      RenderBox.getDistanceToActualBaseline (package:flutter/src/rendering/box.dart:1672:22)
I/flutter (12150): #10     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.computeDistanceToActualBaseline (package:flutter/src/rendering/proxy_box.dart:98:20)
I/flutter (12150): #11     RenderBox.getDistanceToActualBaseline.<anonymous closure> (package:flutter/src/rendering/box.dart:1672:50)
I/flutter (12150): #12     __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent (dart:collection/runtime/libcompact_hash.dart:281:23)
I/flutter (12150): #13     RenderBox.getDistanceToActualBaseline (package:flutter/src/rendering/box.dart:1672:22)
I/flutter (12150): #14     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.computeDistanceToActualBaseline (package:flutter/src/rendering/proxy_box.dart:98:20)
I/flutter (12150): #15     RenderBox.getDistanceToActualBaseline.<anonymous closure> (package:flutter/src/rendering/box.dart:1672:50)
I/flutter (12150): #16     __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent (dart:collection/runtime/libcompact_hash.dart:281:23)
I/flutter (12150): #17     RenderBox.getDistanceToActualBaseline (package:flutter/src/rendering/box.dart:1672:22)
I/flutter (12150): #18     _RenderStack&RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultComputeDistanceToHighestActualBaseline (package:flutter/src/rendering/box.dart:2229:32)
I/flutter (12150): #19     RenderStack.computeDistanceToActualBaseline (package:flutter/src/rendering/stack.dart:470:12)
I/flutter (12150): #20     RenderBox.getDistanceToActualBaseline.<anonymous closure> (package:flutter/src/rendering/box.dart:1672:50)
I/flutter (12150): #21     __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent (dart:collection/runtime/libcompact_hash.dart:281:23)
I/flutter (12150): #22     RenderBox.getDistanceToActualBaseline (package:flutter/src/rendering/box.dart:1672:22)
I/flutter (12150): #23     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.computeDistanceToActualBaseline (package:flutter/src/rendering/proxy_box.dart:98:20)
I/flutter (12150): #24     RenderBox.getDistanceToActualBaseline.<anonymous closure> (package:flutter/src/rendering/box.dart:1672:50)
I/flutter (12150): #25     __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent (dart:collection/runtime/libcompact_hash.dart:281:23)
I/flutter (12150): #26     RenderBox.getDistanceToActualBaseline (package:flutter/src/rendering/box.dart:1672:22)
I/flutter (12150): #27     RenderShiftedBox.computeDistanceToActualBaseline (package:flutter/src/rendering/shifted_box.dart:56:22)
I/flutter (12150): #28     RenderBox.getDistanceToActualBaseline.<anonymous closure> (package:flutter/src/rendering/box.dart:1672:50)
I/flutter (12150): #29     __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent (dart:collection/runtime/libcompact_hash.dart:281:23)
I/flutter (12150): #30     RenderBox.getDistanceToActualBaseline (package:flutter/src/rendering/box.dart:1672:22)
I/flutter (12150): #31     _RenderFlex&RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultComputeDistanceToHighestActualBaseline (package:flutter/src/rendering/box.dart:2229:32)
I/flutter (12150): #32     RenderFlex.computeDistanceToActualBaseline (package:flutter/src/rendering/flex.dart:600:14)
I/flutter (12150): #33     RenderBox.getDistanceToActualBaseline.<anonymous closure> (package:flutter/src/rendering/box.dart:1672:50)
I/flutter (12150): #34     __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent (dart:collection/runtime/libcompact_hash.dart:281:23)
I/flutter (12150): #35     RenderBox.getDistanceToActualBaseline (package:flutter/src/rendering/box.dart:1672:22)
I/flutter (12150): #36     _RenderFlex&RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultComputeDistanceToFirstActualBaseline (package:flutter/src/rendering/box.dart:2211:35)
I/flutter (12150): #37     RenderFlex.computeDistanceToActualBaseline (package:flutter/src/rendering/flex.dart:601:12)
I/flutter (12150): #38     RenderBox.getDistanceToActualBaseline.<anonymous closure> (package:flutter/src/rendering/box.dart:1672:50)
I/flutter (12150): #39     __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent (dart:collection/runtime/libcompact_hash.dart:281:23)
I/flutter (12150): #40     RenderBox.getDistanceToActualBaseline (package:flutter/src/rendering/box.dart:1672:22)
I/flutter (12150): #41     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.computeDistanceToActualBaseline (package:flutter/src/rendering/proxy_box.dart:98:20)
I/flutter (12150): #42     RenderBox.getDistanceToActualBaseline.<anonymous closure> (package:flutter/src/rendering/box.dart:1672:50)
I/flutter (12150): #43     __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent (dart:collection/runtime/libcompact_hash.dart:281:23)
I/flutter (12150): #44     RenderBox.getDistanceToActualBaseline (package:flutter/src/rendering/box.dart:1672:22)
I/flutter (12150): #45     RenderShiftedBox.computeDistanceToActualBaseline (package:flutter/src/rendering/shifted_box.dart:56:22)
I/flutter (12150): #46     RenderBox.getDistanceToActualBaseline.<anonymous closure> (package:flutter/src/rendering/box.dart:1672:50)
I/flutter (12150): #47     __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.putIfAbsent (dart:collection/runtime/libcompact_hash.dart:281:23)
I/flutter (12150): #48     RenderBox.getDistanceToActualBaseline (package:flutter/src/rendering/box.dart:1672:22)
I/flutter (12150): #49     RenderBox.getDistanceToBaseline (package:flutter/src/rendering/box.dart:1655:27)
I/flutter (12150): #50     _RenderDecoration._layout.layoutLineBox (package:flutter/src/material/input_decorator.dart:820:35)
I/flutter (12150): #51     _RenderDecoration._layout (package:flutter/src/material/input_decorator.dart:858:18)
I/flutter (12150): #52     _RenderDecoration.performLayout (package:flutter/src/material/input_decorator.dart:987:44)
I/flutter (12150): #53     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #54     RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:199:11)
I/flutter (12150): #55     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #56     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #57     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #58     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #59     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #60     RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:410:13)
I/flutter (12150): #61     RenderSliverList.performLayout.advance (package:flutter/src/rendering/sliver_list.dart:190:19)
I/flutter (12150): #62     RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:233:19)
I/flutter (12150): #63     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #64     RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:182:11)
I/flutter (12150): #65     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #66     RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:407:13)
I/flutter (12150): #67     RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1322:12)
I/flutter (12150): #68     RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1240:20)
I/flutter (12150): #69     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #70     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #71     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #72     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #73     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #74     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #75     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #76     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #77     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #78     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #79     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #80     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #81     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #82     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #83     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #84     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #85     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #86     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:142:11)
I/flutter (12150): #87     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:350:7)
I/flutter (12150): #88     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:212:7)
I/flutter (12150): #89     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:356:14)
I/flutter (12150): #90     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #91     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #92     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #93     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #94     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1206:11)
I/flutter (12150): #95     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #96     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #97     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #98     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #99     RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #100    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #101    RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #102    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #103    RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #104    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #105    RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #106    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #107    RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #108    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (12150): #109    RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #110    RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3030:14)
I/flutter (12150): #111    RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (12150): #112    RenderStack.performLayout (package:flutter/src/rendering/stack.dart:510:15)
I/flutter (12150): #113    RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1507:7)
I/flutter (12150): #114    PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:766:18)
I/flutter (12150): #115    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:329:19)
I/flutter (12150): #116    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:701:13)
I/flutter (12150): #117    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:268:5)
I/flutter (12150): #118    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:988:15)
I/flutter (12150): #119    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:928:9)
I/flutter (12150): #120    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:840:5)
I/flutter (12150): #124    _invoke (dart:ui/hooks.dart:209:10)
I/flutter (12150): #125    _drawFrame (dart:ui/hooks.dart:168:3)
I/flutter (12150): (elided 5 frames from class _AssertionError and package dart:async)
I/flutter (12150): 
I/flutter (12150): The following RenderObject was being processed when the exception was fired:
I/flutter (12150):   _RenderDecoration#ff88c relayoutBoundary=up6 NEEDS-LAYOUT NEEDS-PAINT
I/flutter (12150):   creator: _Decorator ← InputDecorator ← Padding ← RecipeTags ← RepaintBoundary-[<2>] ←
I/flutter (12150):   IndexedSemantics ← NotificationListener<KeepAliveNotification> ← KeepAlive ← AutomaticKeepAlive ←
I/flutter (12150):   SliverList ← MediaQuery ← SliverPadding ← ⋯
I/flutter (12150):   parentData: offset=Offset(0.0, 0.0) (can use size)
I/flutter (12150):   constraints: BoxConstraints(w=330.0, 0.0<=h<=Infinity)
I/flutter (12150):   size: MISSING
I/flutter (12150): This RenderObject had the following descendants (showing up to depth 5):
I/flutter (12150):   RenderPadding#59ba6 relayoutBoundary=up7 NEEDS-PAINT
I/flutter (12150):     RenderDecoratedBox#aca5d relayoutBoundary=up8 NEEDS-PAINT
I/flutter (12150):       RenderFlex#cda2b relayoutBoundary=up9 NEEDS-PAINT
I/flutter (12150):         RenderFlex#c1ed4 relayoutBoundary=up10 NEEDS-PAINT
I/flutter (12150):           RenderPadding#a7598 relayoutBoundary=up11 NEEDS-PAINT
I/flutter (12150):   RenderTransform#1049b relayoutBoundary=up7 NEEDS-PAINT
I/flutter (12150):     RenderAnimatedOpacity#65b73 relayoutBoundary=up8 NEEDS-PAINT
I/flutter (12150):       RenderParagraph#01a3d relayoutBoundary=up9 NEEDS-PAINT
I/flutter (12150):   RenderConstrainedBox#b10b2 NEEDS-LAYOUT NEEDS-PAINT
I/flutter (12150):   RenderCustomPaint#4a64d NEEDS-LAYOUT NEEDS-PAINT
I/flutter (12150): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (12150): Another exception was thrown: RenderBox was not laid out: _RenderDecoration#ff88c relayoutBoundary=up6 NEEDS-PAINT
I/flutter (12150): Another exception was thrown: RenderBox was not laid out: RenderPadding#a02eb relayoutBoundary=up5 NEEDS-PAINT
I/flutter (12150): Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#d4e76 relayoutBoundary=up4 NEEDS-PAINT
I/flutter (12150): Another exception was thrown: 'package:flutter/src/rendering/sliver_multi_box_adaptor.dart': Failed assertion: line 467 pos 12: 'child.hasSize': is not true.
I/flutter (12150): Another exception was thrown: NoSuchMethodError: The getter 'scrollOffsetCorrection' was called on null.
I/flutter (12150): Another exception was thrown: NoSuchMethodError: The method 'debugAssertIsValid' was called on null.
I/flutter (12150): Another exception was thrown: Please see the documentation for computeDistanceToActualBaseline for the required calling conventions of this method.
I/flutter (12150): Another exception was thrown: Please see the documentation for computeDistanceToActualBaseline for the required calling conventions of this method.
I/flutter (12150): Another exception was thrown: RenderBox was not laid out: _RenderDecoration#ff88c relayoutBoundary=up6 NEEDS-PAINT
I/flutter (12150): Another exception was thrown: RenderBox was not laid out: RenderPadding#a02eb relayoutBoundary=up5 NEEDS-PAINT
I/flutter (12150): Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#d4e76 relayoutBoundary=up4 NEEDS-PAINT
I/flutter (12150): Another exception was thrown: 'package:flutter/src/rendering/sliver_multi_box_adaptor.dart': Failed assertion: line 467 pos 12: 'child.hasSize': is not true.
I/flutter (12150): Another exception was thrown: NoSuchMethodError: The getter 'scrollOffsetCorrection' was called on null.
I/flutter (12150): Another exception was thrown: NoSuchMethodError: The method 'debugAssertIsValid' was called on null.
I/flutter (12150): Another exception was thrown: NoSuchMethodError: The getter 'visible' was called on null.
I/flutter (12150): Another exception was thrown: Please see the documentation for computeDistanceToActualBaseline for the required calling conventions of this method.
I/flutter (12150): Another exception was thrown: Please see the documentation for computeDistanceToActualBaseline for the required calling conventions of this method.
I/flutter (12150): Another exception was thrown: RenderBox was not laid out: _RenderDecoration#ff88c relayoutBoundary=up6 NEEDS-PAINT
I/flutter (12150): Another exception was thrown: RenderBox was not laid out: RenderPadding#a02eb relayoutBoundary=up5 NEEDS-PAINT
I/flutter (12150): Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#d4e76 relayoutBoundary=up4 NEEDS-PAINT
I/flutter (12150): Another exception was thrown: 'package:flutter/src/rendering/sliver_multi_box_adaptor.dart': Failed assertion: line 467 pos 12: 'child.hasSize': is not true.
I/flutter (12150): Another exception was thrown: NoSuchMethodError: The getter 'scrollOffsetCorrection' was called on null.
I/flutter (12150): Another exception was thrown: NoSuchMethodError: The method 'debugAssertIsValid' was called on null.
I/flutter (12150): Another exception was thrown: NoSuchMethodError: The getter 'visible' was called on null.
I/flutter (12150): Another exception was thrown: Please see the documentation for computeDistanceToActualBaseline for the required calling conventions of this method.
I/chatty  (12150): uid=10085(eu.delperdange.pmp_app) Thread-3 identical 2 lines
I/flutter (12150): Another exception was thrown: Please see the documentation for computeDistanceToActualBaseline for the required calling conventions of this method.
I/flutter (12150): Another exception was thrown: RenderBox was not laid out: _RenderDecoration#ff88c relayoutBoundary=up6 NEEDS-PAINT
I/flutter (12150): Another exception was thrown: RenderBox was not laid out: RenderPadding#a02eb relayoutBoundary=up5 NEEDS-PAINT
I/flutter (12150): Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#d4e76 relayoutBoundary=up4 NEEDS-PAINT
I/flutter (12150): Another exception was thrown: 'package:flutter/src/rendering/sliver_multi_box_adaptor.dart': Failed assertion: line 467 pos 12: 'child.hasSize': is not true.
I/flutter (12150): Another exception was thrown: NoSuchMethodError: The getter 'scrollOffsetCorrection' was called on null.
I/flutter (12150): Another exception was thrown: NoSuchMethodError: The method 'debugAssertIsValid' was c

Refresh

I have a SelectableTags widget inside my build method. I also give the user the option to go to a page and edit tags using InputTags before returning to this main screen to select tags.

I can see it’s calling my method to rebuild the SelectableTags widget but what’s displayed doesn’t change. I’ve got it to print how many tags it is using when it rebuilds and so I know it’s picking up the updated tag list successfully, but what’s displayed doesn’t update.

Is there something I need to do to force the display to refresh??

Possibility to remove tag

It would be very good that there is a possibility to remove one tag (same as on InputTags with "x" button), but without an option, for a user to add new tags.

Cancel onRemove

I would like to ask user to remove tag or not before actually remove it with AlertDialog, but when I tried to do it, onRemove automatically remove item at that index and cause RangeError (index): Invalid value: Not in range 0..5, inclusive: 6.

Is there any temporary way to prevent this? If no, I wish to have it as feature request.
Could be adding onTap callback to ItemTagsRemoveButton itself, then I can add my custom callback instead of using onRemove.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.