fix: text update bug on number/url fields (#5315)

This commit is contained in:
Richard Shiue 2024-05-13 16:30:17 +08:00 committed by GitHub
parent 8273d66c50
commit 027ab2c1ef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 20 additions and 16 deletions

View File

@ -163,16 +163,15 @@ class _TextCellState extends State<TextCardCell> {
return BlocBuilder<TextCellBloc, TextCellState>( return BlocBuilder<TextCellBloc, TextCellState>(
builder: (context, state) { builder: (context, state) {
final content = state.content; final content = state.content;
final text = content.isEmpty
? LocaleKeys.grid_row_textPlaceholder.tr()
: content;
final color = content.isEmpty ? Theme.of(context).hintColor : null;
return Padding( return content.isEmpty
? const SizedBox.shrink()
: Container(
padding: widget.style.padding, padding: widget.style.padding,
alignment: AlignmentDirectional.centerStart,
child: Text( child: Text(
text, content,
style: widget.style.textStyle.copyWith(color: color), style: widget.style.textStyle,
maxLines: widget.style.maxLines, maxLines: widget.style.maxLines,
), ),
); );

View File

@ -79,8 +79,11 @@ class _NumberCellState extends GridEditableTextCell<EditableNumberCell> {
return BlocProvider.value( return BlocProvider.value(
value: cellBloc, value: cellBloc,
child: BlocListener<NumberCellBloc, NumberCellState>( child: BlocListener<NumberCellBloc, NumberCellState>(
listener: (context, state) => listener: (context, state) {
_textEditingController.text = state.content, if (!focusNode.hasFocus) {
_textEditingController.text = state.content;
}
},
child: Builder( child: Builder(
builder: (context) { builder: (context) {
return widget.skin.build( return widget.skin.build(

View File

@ -112,8 +112,10 @@ class _GridURLCellState extends GridEditableTextCell<EditableURLCell> {
child: BlocListener<URLCellBloc, URLCellState>( child: BlocListener<URLCellBloc, URLCellState>(
listenWhen: (previous, current) => previous.content != current.content, listenWhen: (previous, current) => previous.content != current.content,
listener: (context, state) { listener: (context, state) {
if (!focusNode.hasFocus) {
_textEditingController.value = _textEditingController.value =
_textEditingController.value.copyWith(text: state.content); _textEditingController.value.copyWith(text: state.content);
}
widget._cellDataNotifier.value = state.content; widget._cellDataNotifier.value = state.content;
}, },
child: widget.skin.build( child: widget.skin.build(