반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- RouteObserver
- typescript
- Completer
- Raycasting
- methodChannel
- webrtc
- Game js
- Prism.js
- userevent_tracker
- web track
- node
- Babel standalone
- uint8array
- jszip
- code editor
- identifierForVender
- Redux
- KakaoMap
- Flutter
- react
- Excel
- REST API
- FirebaseAnalytics
- Image Resize typescript
- uint16array
- babel
- androidId
- Three-fiber
- Three js
- swagger-typescript-api
Archives
- Today
- Total
Never give up
Flutter - Listview with Listener 본문
반응형
전에 ScrollController를 이용해서 동작을 읽었는데
Listener을 통해 Drag 이벤트 등을 읽을 수 있습니다
@override
Widget build(BuildContext context) {
var _data = Provider.of<VisibilityData>(context);
return Scaffold(
appBar: AppBar(title: Text('Scroll test')),
body: Listener(
onPointerMove: (value) {
if (value.delta.dy > 0) {
_data.setVisible(true);
} else if (value.delta.dy < 0) {
_data.setVisible(false);
}
},
child: ListView.builder(
itemCount: 20,
itemBuilder: (context, index) {
return ListTile(
leading: CircleAvatar(
child: Text('${index + 1}'),
),
title: Text('2 x $index = ${index * 2}'),
);
}),
),
floatingActionButton: Visibility(
visible: _data.getVisible,
child: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {},
),
));
}
delta는 변화량 dy는 수직측, 만약 수평측이 필요하다면 dx를 사용하면 되고
controller를 사용하지 않기 때문에 Stateless위젯에서 사용할 때 유용한거 같습니다
조금 더 개선을 해보자면 bool값의 변화가 필요할 때만 호출을 하면 될거 같습니다
if (value.delta.dy > 0 && !_data.getVisible) {
_data.setVisible(true);
} else if (value.delta.dy < 0 && _data.getVisible) {
_data.setVisible(false);
}
반응형
'Flutter' 카테고리의 다른 글
Flutter - addPostFrameCallback (0) | 2020.08.03 |
---|---|
Flutter - StatefulWidget Lifecycle (0) | 2020.08.03 |
Flutter - Listview with ScrollController (2) | 2020.08.03 |
Flutter - AnimatedBuilder with transition (0) | 2020.08.03 |
Flutter - Indexed Stack with Provider (5) | 2020.08.03 |
Comments