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

Merge branch '12-allow-multiline-parameter-item' into 'master'

Resolve "Allow multiline parameter item"

Closes #12

See merge request !13
parents ceba5ce9 6c01190c
No related branches found
No related tags found
1 merge request!13Resolve "Allow multiline parameter item"
Pipeline #7356 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