didvan-app/lib/widgets/didvan/scaffold.dart

60 lines
1.5 KiB
Dart

import 'package:didvan/models/view/app_bar_data.dart';
import 'package:didvan/widgets/didvan/app_bar.dart';
import 'package:flutter/material.dart';
class DidvanScaffold extends StatefulWidget {
final List<Widget>? slivers;
final AppBarData appBarData;
final bool hasPadding;
const DidvanScaffold({
Key? key,
this.slivers,
required this.appBarData,
this.hasPadding = true,
}) : super(key: key);
@override
State<DidvanScaffold> createState() => _DidvanScaffoldState();
}
class _DidvanScaffoldState extends State<DidvanScaffold> {
bool _isElevated = false;
final ScrollController _scrollController = ScrollController();
@override
void initState() {
_scrollController.addListener(() => _handleAppBarElevation());
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(
slivers: [
SliverAppBar(
backgroundColor: Theme.of(context).backgroundColor,
automaticallyImplyLeading: false,
pinned: true,
flexibleSpace: DidvanAppBar(appBarData: widget.appBarData),
),
if (widget.slivers != null) ...widget.slivers!
],
),
);
}
void _handleAppBarElevation() {
if (_scrollController.position.pixels > kToolbarHeight && !_isElevated) {
setState(() {
_isElevated = true;
});
}
if (_scrollController.position.pixels < kToolbarHeight && _isElevated) {
setState(() {
_isElevated = false;
});
}
}
}