[flutter] 플러터에서 훅(hook)을 활용하여 무한 스크롤 기능 구현하기
목차
- 훅(hook)에 대한 소개
- 플러터에서의 훅(hook) 활용
- 사용 예시
- 무한 스크롤 구현하기
- 결론
1. 훅(hook)에 대한 소개
훅(hook)은 리액트(React)나 플러터(Flutter)와 같은 프레임워크에서 상태와 생명 주기(effects) 기능을 함수 컴포넌트에서 사용할 수 있도록하는 기능입니다. 플러터에서는 flutter_hooks
패키지를 통해 훅을 사용할 수 있습니다.
2. 플러터에서의 훅(hook) 활용
사용 예시
플러터에서 flutter_hooks
패키지를 이용하여 훅을 활용하는 방법은 아래와 같습니다.
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends HookWidget {
@override
Widget build(BuildContext context) {
var count = useState(0);
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('훅 활용 예시'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('버튼 클릭 횟수:'),
HookBuilder(
builder: (context) {
return Text(
'${count.value}',
style: Theme.of(context).textTheme.headline4,
);
},
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => count.value++,
tooltip: '증가',
child: Icon(Icons.add),
),
),
);
}
}
무한 스크롤 구현하기
무한 스크롤을 구현하기 위해서는 flutter_hooks
패키지의 useEffect
훅을 사용하여 스크롤 위치를 감시하고, 리스트의 끝에 도달할 때 추가 데이터를 불러오는 방법을 활용할 수 있습니다.
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends HookWidget {
@override
Widget build(BuildContext context) {
var scrollController = useScrollController();
var list = useState(List<String>.generate(20, (index) => 'Item $index'));
useEffect(() {
scrollController.addListener(() {
if (scrollController.position.pixels == scrollController.position.maxScrollExtent) {
// 끝에 도달했을 때 추가 데이터 로딩 로직
// ...
}
});
return () {
scrollController.dispose();
};
}, []);
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('무한 스크롤'),
),
body: ListView.builder(
controller: scrollController,
itemCount: list.value.length,
itemBuilder: (context, index) {
return ListTile(title: Text(list.value[index]));
},
),
),
);
}
}
3. 결론
플러터의 flutter_hooks
패키지를 통해 훅을 활용하여 간편하게 상태와 생명 주기 관리를 할 수 있습니다. 무한 스크롤을 구현할 때도 useEffect
훅을 사용하여 스크롤 감시 및 추가 데이터 로딩을 효과적으로 처리할 수 있습니다.
위 예시 코드를 참고하여 플러터에서 훅을 활용하여 무한 스크롤 기능을 구현해보세요.