Widget widgetList(){
return ListView.builder(
itemCount : 10,
itemBuilder : (ctx,i) => Card(),
itemExtent: 100,
cacheExtent : 100,
);
}
ListView.builder를 통해 listview를 만들때 다음과 같이 위젯 속성들을 정해준다.
itemCount,itemBuilder,itemExtent까지는 내가 자주 사용하던 것들이기에 익숙했다.
하지만 새로 알게 된 것은 cacheExtent이다.
cacheExtent에 대해 검색을 하다 발견한 영문 설명은 다음과 같다
You can call items outside of the visible portion by adding the cacheExtent which is measured in pixels NOT items. So a cacheExtent: 1000 means a thousand pixels will be loaded and rendered off the screen. This essentially “pre-loads” the data so that you’re not stuck waiting on data loading into the ListView.
위의 설명은 다음과 같다. 보통 listView.builder를 통해 listview를 그리면 해당 index의 아이템이 화면에 나타났을 때(사용자에게 보여졌을 때) build가 된다. 하지만 cacheExtent의 값을 지정해주면 화면 밖에서 해당 값만큼의 픽셀들을 통해 아이템들을 화면 밖에서 "미리" 빌드를 해 놓는다. 그렇기 때문에 listview를 로딩하는 순간을 기다리지 않아도 된다.
where
List numbers = [1,2,3,4,5,6];
List evenNumbers = numbers.where((element) {retrun element % 2 == 0;});
print(evenNumbers); // [2,4,6];
List numbers = [0,1,2,3,4,5];
List numsTo2 = numbers.takeWhile((int n) => n <= 2);
print(evenNumbers); // [0,1,2];
final numsFrom0To5 = [0, 1, 2, 3, 4, 5];
numsFrom0To5.removeRange(0,3);
print(numsFrom0To5); //[3,4,5]
extension on DateTime{
String get humanize{
return "${this.day}/${this.month}";
void main(){
final DateTime now = DateTime.now();
print(now.humanzie); // "03/11";
}
DateTime 타입에 기존에 없던 humanize라는 속성을 정의하여 사용할 수 있게 되었다.