glove effect removed on scroll in homeScreen

This commit is contained in:
meylis98 2023-03-09 03:35:53 +05:00
parent 4c5b2afca7
commit 7f7601b1ed
1 changed files with 166 additions and 163 deletions

View File

@ -97,180 +97,183 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
vertical: GlobalVariables.verticalPadding(context) / 2,
horizontal: GlobalVariables.horizontalPadding(context),
),
child: NestedScrollView(
physics: const BouncingScrollPhysics(),
scrollBehavior: CustomScrollBehavior(),
headerSliverBuilder: (context, innerBoxIsScrolled) => [
SliverToBoxAdapter(
child: Column(
children: [
Container(
height: 50.adaptedPx(),
width: MediaQuery.of(context).size.width,
decoration: BoxDecoration(
color: AppTheme.whiteColor,
borderRadius: BorderRadius.circular(30.adaptedPx()),
),
child: TextButton(
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => const SearchScreen(),
),
);
},
style: TextButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(30.adaptedPx()),
),
child: ScrollConfiguration(
behavior: CustomScrollBehavior(),
child: NestedScrollView(
physics: const BouncingScrollPhysics(),
headerSliverBuilder: (context, innerBoxIsScrolled) => [
SliverToBoxAdapter(
child: Column(
children: [
Container(
height: 50.adaptedPx(),
width: MediaQuery.of(context).size.width,
decoration: BoxDecoration(
color: AppTheme.whiteColor,
borderRadius:
BorderRadius.circular(30.adaptedPx()),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.symmetric(
horizontal: 15.adaptedPx()),
child: SvgPicture.asset(
'assets/icons/search.svg'),
),
Text(
'searchHint'.translation,
style: GoogleFonts.poppins(
textStyle: Theme.of(context)
.primaryTextTheme
.bodyMedium
?.copyWith(
fontSize: 16.adaptedPx(),
color: AppTheme.lightTextColor,
),
child: TextButton(
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => const SearchScreen(),
),
);
},
style: TextButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(30.adaptedPx()),
),
],
),
),
),
CarouselSlider(
items: (sliders != null)
? [
for (int i = 0; i < sliders.length; i++)
CachedNetworkImage(
imageUrl: sliders[i].img,
width:
GlobalVariables.deviceWidth(context),
fit: BoxFit.contain,
progressIndicatorBuilder:
(context, url, progress) =>
const Center(
child: CircularProgressIndicator(),
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.symmetric(
horizontal: 15.adaptedPx()),
child: SvgPicture.asset(
'assets/icons/search.svg'),
),
Text(
'searchHint'.translation,
style: GoogleFonts.poppins(
textStyle: Theme.of(context)
.primaryTextTheme
.bodyMedium
?.copyWith(
fontSize: 16.adaptedPx(),
color: AppTheme.lightTextColor,
),
),
]
: [
SizedBox(
height: 150.adaptedPx(),
child: const Center(
child: CircularProgressIndicator()),
),
],
options: CarouselOptions(
initialPage: 0,
padEnds: true,
scrollPhysics: const BouncingScrollPhysics(),
viewportFraction: 1,
autoPlay: true,
onPageChanged: (index, reason) {
setState(() {
currentPage = index;
});
},
autoPlayAnimationDuration:
const Duration(seconds: 2),
autoPlayInterval: const Duration(seconds: 5),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: List.generate(
sliders.length,
(index) => buildDot(
index: index,
),
),
),
),
Padding(
padding: EdgeInsets.only(
top: 20.adaptedPx(), bottom: 10.adaptedPx()),
child: Align(
alignment: Alignment.centerLeft,
child: Text(
'categories'.translation,
style: Theme.of(context)
.primaryTextTheme
.bodyMedium
?.copyWith(
color: AppTheme.blackColor,
fontSize: 18.adaptedPx(),
fontWeight: FontWeight.w600,
),
),
),
),
categories.isEmpty
? Padding(
padding: EdgeInsets.symmetric(
vertical: 10.adaptedPx()),
child: const Center(
child: CircularProgressIndicator()),
)
: Padding(
padding: EdgeInsets.symmetric(
vertical: 10.adaptedPx()),
child: ButtonsTabBar(
controller: tabController,
contentPadding: EdgeInsets.symmetric(
horizontal: 20.adaptedPx()),
splashColor: AppTheme.lightPrimaryColor,
radius: 10.adaptedPx(),
backgroundColor: AppTheme.lightPrimaryColor,
buttonMargin: EdgeInsets.only(
left: 0,
right: 15.adaptedPx(),
),
onTap: (value) {
setState(() {
categoryId = categories[value].id;
debugPrint(categoryId.toString());
});
},
unselectedBackgroundColor:
AppTheme.whiteColor,
physics: const BouncingScrollPhysics(),
tabs: [
for (var category in categories)
Tab(text: category.name)
CarouselSlider(
items: (sliders != null)
? [
for (int i = 0; i < sliders.length; i++)
CachedNetworkImage(
imageUrl: sliders[i].img,
width: GlobalVariables.deviceWidth(
context),
fit: BoxFit.contain,
progressIndicatorBuilder:
(context, url, progress) =>
const Center(
child: CircularProgressIndicator(),
),
),
]
: [
SizedBox(
height: 150.adaptedPx(),
child: const Center(
child: CircularProgressIndicator()),
),
],
options: CarouselOptions(
initialPage: 0,
padEnds: true,
scrollPhysics: const BouncingScrollPhysics(),
viewportFraction: 1,
autoPlay: true,
onPageChanged: (index, reason) {
setState(() {
currentPage = index;
});
},
autoPlayAnimationDuration:
const Duration(seconds: 2),
autoPlayInterval: const Duration(seconds: 5),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: List.generate(
sliders.length,
(index) => buildDot(
index: index,
),
),
),
Padding(
padding: EdgeInsets.only(
top: 20.adaptedPx(), bottom: 10.adaptedPx()),
child: Align(
alignment: Alignment.centerLeft,
child: Text(
'categories'.translation,
style: Theme.of(context)
.primaryTextTheme
.bodyMedium
?.copyWith(
color: AppTheme.blackColor,
fontSize: 18.adaptedPx(),
fontWeight: FontWeight.w600,
),
),
),
),
categories.isEmpty
? Padding(
padding: EdgeInsets.symmetric(
vertical: 10.adaptedPx()),
child: const Center(
child: CircularProgressIndicator()),
)
: Padding(
padding: EdgeInsets.symmetric(
vertical: 10.adaptedPx()),
child: ButtonsTabBar(
controller: tabController,
contentPadding: EdgeInsets.symmetric(
horizontal: 20.adaptedPx()),
splashColor: AppTheme.lightPrimaryColor,
radius: 10.adaptedPx(),
backgroundColor: AppTheme.lightPrimaryColor,
buttonMargin: EdgeInsets.only(
left: 0,
right: 15.adaptedPx(),
),
onTap: (value) {
setState(() {
categoryId = categories[value].id;
debugPrint(categoryId.toString());
});
},
unselectedBackgroundColor:
AppTheme.whiteColor,
physics: const BouncingScrollPhysics(),
tabs: [
for (var category in categories)
Tab(text: category.name)
],
),
),
),
SizedBox(height: 15.adaptedPx()),
],
SizedBox(height: 15.adaptedPx()),
],
),
),
),
],
body: tabController != null
? TabBarView(
controller: tabController,
children: categories.isNotEmpty
? categories
.map(
(category) => Products(
id: category.id,
),
)
.toList()
: [],
)
: Container()),
],
body: tabController != null
? TabBarView(
controller: tabController,
children: categories.isNotEmpty
? categories
.map(
(category) => Products(
id: category.id,
),
)
.toList()
: [],
)
: Container()),
),
),
);
}