Skip to content
Snippets Groups Projects

Resolve "Allow multiline parameter item"

Merged Benoît Harrault requested to merge 12-allow-multiline-parameter-item into master
4 files
+ 47
18
Compare changes
  • Side-by-side
  • Inline
Files
4
@@ -21,13 +21,15 @@ class PageParameters extends StatelessWidget {
// Activity settings (top)
for (ApplicationSettingsParameter parameter in appConfig.activitySettings) {
if (parameter.displayedOnTop) {
lines.add(Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: buildParametersLine(
parameter: parameter,
isEnabled: !canBeResumed,
),
));
for (var itemsLine in buildParametersLines(
parameter: parameter,
isEnabled: !canBeResumed,
)) {
lines.add(Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: itemsLine,
));
}
lines.add(SizedBox(height: separatorHeight));
}
@@ -75,13 +77,15 @@ class PageParameters extends StatelessWidget {
// Activity settings (bottom)
for (ApplicationSettingsParameter parameter in appConfig.activitySettings) {
if (!parameter.displayedOnTop) {
lines.add(Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: buildParametersLine(
parameter: parameter,
isEnabled: !canBeResumed,
),
));
for (var itemsLine in buildParametersLines(
parameter: parameter,
isEnabled: !canBeResumed,
)) {
lines.add(Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: itemsLine,
));
}
lines.add(SizedBox(height: separatorHeight));
}
@@ -92,7 +96,7 @@ class PageParameters extends StatelessWidget {
);
}
List<Widget> buildParametersLine({
List<List<Widget>> buildParametersLines({
required ApplicationSettingsParameter parameter,
required bool isEnabled,
}) {
@@ -103,6 +107,10 @@ class PageParameters extends StatelessWidget {
return [];
}
final int itemsPerLine =
parameter.itemsPerLine != 0 ? parameter.itemsPerLine : items.length;
// Build linear list
for (ApplicationSettingsParameterItemValue item in items) {
final Widget parameterButton = BlocBuilder<ActivitySettingsCubit, ActivitySettingsState>(
builder: (BuildContext context, ActivitySettingsState activitySettingsState) {
@@ -110,7 +118,7 @@ class PageParameters extends StatelessWidget {
BlocProvider.of<ActivitySettingsCubit>(context);
final double displayWidth = MediaQuery.of(context).size.width;
final double itemWidth = displayWidth / items.length - 4;
final double itemWidth = displayWidth / itemsPerLine - 4;
return SizedBox.square(
dimension: itemWidth,
@@ -132,6 +140,21 @@ class PageParameters extends StatelessWidget {
parameterButtons.add(parameterButton);
}
return parameterButtons;
// Split buttons in lines according to items count limit per line
final List<List<Widget>> lines = [];
List<Widget> line = [];
for (var parameterButton in parameterButtons) {
line.add(parameterButton);
if (line.length == itemsPerLine) {
lines.add(line);
line = [];
}
}
if (line.length != itemsPerLine) {
lines.add(line);
}
return lines;
}
}
Loading