renderWithPlunge function
String
renderWithPlunge(
- int count,
- bool hasResult, {
- String? first,
- String? firstNoResult,
- String? last,
- String? lastNoResult,
- required String next,
- required String nextNoResult,
- required String fillValues(
- int index,
- String template,
- Map<String, String> values,
- String next(
- int index
),
),
})
Implementation
String renderWithPlunge(
int count,
bool hasResult, {
String? first,
String? firstNoResult,
String? last,
String? lastNoResult,
required String next,
required String nextNoResult,
required String Function(
int index,
String template,
Map<String, String> values,
String Function(int index) next,
) fillValues,
}) {
String plunge(int index) {
String? template;
if (index == 0) {
template = hasResult ? first : firstNoResult;
}
if (index == count - 1 && template == null) {
template = hasResult ? last : lastNoResult;
}
if (index >= 0 && index <= count - 1) {
template ??= hasResult ? next : nextNoResult;
} else {
throw RangeError.range(count, 0, count - 1);
}
final k = index + 1;
final values = {
'p1': '@p$k',
'r1': '@r$k',
'rv1': '@rv$k',
};
template = fillValues(index, template, values, plunge);
return render(template, values);
}
return plunge(0);
}