fix: database row page breadcrumbs on smaller screens (#5289)

This commit is contained in:
Richard Shiue 2024-05-08 22:05:50 +08:00 committed by GitHub
parent eeddf341e1
commit dbbdc13d96
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -54,12 +54,7 @@ class ViewTitleBarWithRow extends StatelessWidget {
return Visibility(
visible: maxWidth < constraints.maxWidth,
// if the width is too small, only show one view title bar without the ancestors
replacement: _ViewTitle(
key: ValueKey(state.ancestors.last),
view: state.ancestors.last,
maxTitleWidth: constraints.maxWidth - 50.0,
onUpdated: () {},
),
replacement: _buildRowName(),
child: Row(
// refresh the view title bar when the ancestors changed
key: ValueKey(state.ancestors.hashCode),
@ -104,43 +99,40 @@ class ViewTitleBarWithRow extends StatelessWidget {
}
Widget _buildRowName() {
return BlocBuilder<DatabaseDocumentTitleBloc, DatabaseDocumentTitleState>(
builder: (context, state) {
if (state.databaseController == null) {
return const SizedBox.shrink();
}
return _RowName(
cellBuilder: EditableCellBuilder(
databaseController: state.databaseController!,
),
primaryFieldId: state.fieldId!,
rowId: rowId,
);
},
);
}
}
class _RowName extends StatelessWidget {
const _RowName({
required this.cellBuilder,
required this.primaryFieldId,
required this.rowId,
});
final EditableCellBuilder cellBuilder;
final String primaryFieldId;
final String rowId;
@override
Widget build(BuildContext context) {
return BlocBuilder<DatabaseDocumentTitleBloc, DatabaseDocumentTitleState>(
builder: (context, state) {
if (state.databaseController == null) {
return const SizedBox.shrink();
}
final cellBuilder = EditableCellBuilder(
databaseController: state.databaseController!,
);
return cellBuilder.buildCustom(
CellContext(
fieldId: primaryFieldId,
fieldId: state.fieldId!,
rowId: rowId,
),
skinMap: EditableCellSkinMap(textSkin: _TitleSkin()),
);
},
);
}
}
@ -220,12 +212,10 @@ enum _ViewTitleBehavior {
class _ViewTitle extends StatefulWidget {
const _ViewTitle({
super.key,
required this.view,
this.behavior = _ViewTitleBehavior.editable,
this.maxTitleWidth = 180,
required this.onUpdated,
});
}) : maxTitleWidth = 180;
final ViewPB view;
final _ViewTitleBehavior behavior;