Programming/Flutter
Flutter 화면 스크롤 상태에 따라 AppBar 그림자 효과 변경하기
smok95
2020. 11. 13. 11:51
반응형
화면의 스크롤상태에 따라 앱바의 그림자효과를 설정하는 방법입니다.
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(home: HomePage()));
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
/// 스크롤 상태확인용
ScrollController _controller;
/// elevation효과 사용여부
bool _elevation = false;
@override
void initState() {
super.initState();
_controller = ScrollController();
_controller.addListener(() {
// 스크롤 위치가 최상단인지 확인
final reachTop =
(_controller.offset <= _controller.position.minScrollExtent &&
!_controller.position.outOfRange);
// 최상단이 아닐때만 그림자효과 사용
final elevation = reachTop ? false : true;
if (elevation != _elevation) {
setState(() => _elevation = elevation);
}
});
}
@override
Widget build(BuildContext context) {
final children = List<Text>.filled(200, Text('listitem'));
return Scaffold(
appBar: AppBar(title: Text('HomePage'), elevation: _elevation ? 10 : 0),
body: ListView(controller: _controller, children: children));
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
}
반응형