I want to convert it to dart code but I dnt understand ternary operator in that code
const getPagination = (page, size) => {
const limit = size ? size : 3
const from = page ? page * limit : 0
const to = page ? from size - 1 : size - 1
return { from, to }
}
if you can tell me what code do line by line ??
CodePudding user response:
A more idiomatic Dart implementation of the same code could be:
Range getPagination([int page = 0, int size = 3]) {
RangeError.checkNotNegative(page, "page");
if (size <= 0) size = 3;
var from = page * size;
var to = from size - 1;
return Range(from, to);
}
class Range {
final int from;
final int to;
Range(this.from, this.to);
}
This allows you to call with no arguments, but not with null
as explicit argument. So don't do that.
If you omit the size, the size is 3
. That's more useful than finding a limit if size is null
or 0
, but then use size
anyway in the to
computation, instead of limit
.
Using a list of integers as a pair of integers is not the Dart way. I'd create a class, like here, or wait for records and use a proper (int, int)
tuple.
Dart lists, and maps, are much more expensive data structures than JavaScript "objects". A small class is what corresponds to the anonymous object {from, to}
in JavaScript.
CodePudding user response:
so I convert it by looking at TS play code
void main() {
List<int> getPagination(int? page, int? size) {
int? limit = size ?? 3;
int? from = page != null ? page * limit : 0;
int? to = page != null ? (from size!) - 1 : (size! - 1);
return [from, to];
}
print(getPagination(0, 10));
}
and its works thx to @blex