Skip to main content

1

Image

import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:smooth_page_indicator/smooth_page_indicator.dart';
final pageController = PageController();
Scaffold(
body: ListView(
padding: const EdgeInsets.all(0),
children: [
Gap(MediaQuery.paddingOf(context).top + 16),
buildHeader(),
const Gap(30),
buildSection1(),
const Gap(24),
buildSection2(),
const Gap(24),
buildSection3(),
],
),
),
Widget buildHeader() {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Row(
children: [
Container(
width: 40,
height: 40,
decoration: const BoxDecoration(
shape: BoxShape.circle,
color: Colors.black12,
),
),
const Gap(16),
const Text(
'Hello, Your Name',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 16,
color: Colors.black87,
),
),
],
),
);
}
Widget buildSection1() {
return SizedBox(
height: 90,
child: ListView.builder(
itemCount: 6,
scrollDirection: Axis.horizontal,
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.only(right: 16),
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.only(left: 16),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
height: 64,
width: 64,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
color: Colors.black12,
),
),
const Text(
'Label',
textAlign: TextAlign.center,
style: TextStyle(
fontWeight: FontWeight.w400,
fontSize: 12,
),
),
],
),
);
},
),
);
}
Widget buildSection2() {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: Text(
'Featured Section 2',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 18,
),
),
),
const Gap(12),
SizedBox(
height: 160,
child: PageView(
controller: pageController,
children: List.generate(3, (index) {
return Container(
margin: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
color: Colors.black12,
),
);
}),
),
),
const Gap(16),
Center(
child: SmoothPageIndicator(
controller: pageController,
count: 3,
effect: const WormEffect(dotHeight: 10, dotWidth: 10),
),
),
],
);
}
Widget buildSection3() {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: Text(
'Featured Section 3',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 18,
color: Colors.black87,
),
),
),
const Gap(12),
GridView.count(
crossAxisCount: 3,
mainAxisSpacing: 16,
crossAxisSpacing: 16,
shrinkWrap: true,
padding: const EdgeInsets.symmetric(horizontal: 16),
physics: const NeverScrollableScrollPhysics(),
children: List.generate(6, (index) {
return DecoratedBox(
decoration: BoxDecoration(
color: Colors.black12,
borderRadius: BorderRadius.circular(16),
),
);
}),
),
],
);
}