Skip to content
Snippets Groups Projects
Commit 6c01190c authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Allow multiline parameter item

parent ceba5ce9
No related branches found
No related tags found
1 merge request!13Resolve "Allow multiline parameter item"
Pipeline #7346 passed
## 0.8.0
- Allow multiline parameter item
## 0.7.0
- Allow override activity buttons color
......
......@@ -35,6 +35,7 @@ class ApplicationSettingsParameter {
final String code;
final bool displayedOnTop;
final List<ApplicationSettingsParameterItemValue> values;
final int itemsPerLine;
final Widget Function({
required BuildContext context,
required double size,
......@@ -49,6 +50,7 @@ class ApplicationSettingsParameter {
required this.code,
this.displayedOnTop = true,
required this.values,
this.itemsPerLine = 0,
this.builder,
this.customPainter,
this.colorGetter,
......
......@@ -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;
}
}
......@@ -3,7 +3,7 @@ description: "Flutter custom toolbox for org.benoitharrault.* projects."
publish_to: "none"
version: 0.7.0
version: 0.8.0
homepage: https://git.harrault.fr/android/flutter-toolbox
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment