diff --git a/lib/src/chips_input.dart b/lib/src/chips_input.dart index 3c10a20d..59da4fa3 100644 --- a/lib/src/chips_input.dart +++ b/lib/src/chips_input.dart @@ -3,6 +3,7 @@ import 'dart:math'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter/foundation.dart' show kIsWeb; import 'suggestions_box_controller.dart'; import 'text_cursor.dart'; @@ -288,7 +289,14 @@ class ChipsInputState extends State> Future.delayed(const Duration(milliseconds: 300), () { WidgetsBinding.instance.addPostFrameCallback((_) async { final renderBox = context.findRenderObject() as RenderBox; - await Scrollable.of(context)?.position.ensureVisible(renderBox); + await Scrollable.of(context) + ?.position + .ensureVisible(renderBox) + .then((_) async { + WidgetsBinding.instance.addPostFrameCallback((_) { + _suggestionsBoxController.overlayEntry?.markNeedsBuild(); + }); + }); }); }); } @@ -352,9 +360,11 @@ class ChipsInputState extends State> composing: TextRange.empty, )); } - _closeInputConnectionIfNeeded(); //Hack for #34 (https://github.com/danvick/flutter_chips_input/issues/34#issuecomment-684505282). TODO: Find permanent fix + if( !kIsWeb) { + _closeInputConnectionIfNeeded(); //Hack for #34 (https://github.com/danvick/flutter_chips_input/issues/34#issuecomment-684505282). TODO: Find permanent fix + } _textInputConnection ??= TextInput.attach(this, textInputConfiguration); - _textInputConnection?.setEditingState(_value); + if(_textInputConnection?.attached ?? false) _textInputConnection?.setEditingState(_value); } @override