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

51 lines
1.5 KiB
Dart

import 'package:carousel_slider/carousel_slider.dart';
import 'package:didvan/widgets/didvan/card.dart';
import 'package:flutter/material.dart';
class DidvanPageView extends StatelessWidget {
final List<Widget> pages;
final ScrollController? scrollController;
final int initialPage;
final void Function(int index) onPageChanged;
const DidvanPageView({
Key? key,
required this.pages,
this.scrollController,
required this.onPageChanged,
this.initialPage = 2,
}) : super(key: key);
@override
Widget build(BuildContext context) {
final double deviceTopPadding = MediaQuery.of(context).padding.top;
return CarouselSlider.builder(
itemCount: pages.length,
options: CarouselOptions(
onPageChanged: (index, reason) => onPageChanged(index),
height: double.infinity,
initialPage: 2,
viewportFraction: 0.94,
enableInfiniteScroll: false,
),
itemBuilder: (context, index, realIndex) => SizedBox(
height: MediaQuery.of(context).size.height,
child: SingleChildScrollView(
controller: index == 2 ? scrollController : null,
physics: const BouncingScrollPhysics(),
padding: EdgeInsets.only(
left: 4,
right: 4,
top: 16 + deviceTopPadding,
bottom: 92,
),
child: DidvanCard(
padding: EdgeInsets.zero,
enableBorder: false,
child: pages[index],
),
),
),
);
}
}