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

62 lines
1.9 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 StatelessWidget {
final List<Widget>? slivers;
final List<Widget>? children;
final AppBarData appBarData;
final EdgeInsets padding;
final Color? backgroundColor;
const DidvanScaffold({
Key? key,
this.slivers,
required this.appBarData,
this.children,
this.padding = const EdgeInsets.symmetric(horizontal: 16),
this.backgroundColor,
}) : super(key: key);
@override
Widget build(BuildContext context) {
final double statusBarHeight = MediaQuery.of(context).padding.top;
return Scaffold(
backgroundColor: backgroundColor,
body: Padding(
padding: EdgeInsets.only(top: statusBarHeight),
child: CustomScrollView(
slivers: [
SliverAppBar(
toolbarHeight: kToolbarHeight,
backgroundColor:
backgroundColor ?? Theme.of(context).colorScheme.background,
automaticallyImplyLeading: false,
pinned: true,
flexibleSpace: DidvanAppBar(appBarData: appBarData),
),
const SliverToBoxAdapter(
child: SizedBox(height: 16),
),
if (children != null)
SliverPadding(
padding: padding,
sliver: SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) => children![index],
childCount: children!.length,
),
),
),
if (slivers != null)
for (var i = 0; i < slivers!.length; i++)
SliverPadding(
padding: padding,
sliver: slivers![i],
),
],
),
),
);
}
}