player id added, content bytes api
This commit is contained in:
@@ -1,16 +1,23 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:gap/gap.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:traderscircuit/Utils/Common/CommonAppbar.dart';
|
||||
import 'package:traderscircuit/Utils/Common/CustomTextFormField.dart';
|
||||
import 'package:traderscircuit/Utils/Common/comonGlassmorphicContainer.dart';
|
||||
import 'package:traderscircuit/Utils/Common/sized_box.dart';
|
||||
import 'package:traderscircuit/Utils/text.dart';
|
||||
import 'package:traderscircuit/controller/content_bytes_controller.dart';
|
||||
import 'package:traderscircuit/model/ContentBytesModel/content_bytes_categories_model.dart';
|
||||
import 'package:traderscircuit/model/ContentBytesModel/content_bytes_model.dart';
|
||||
import 'package:traderscircuit/view/Sidemenu/ContentByte/PlayerWidget.dart';
|
||||
import 'package:traderscircuit/view/Sidemenu/ContentByte/Reels.dart';
|
||||
import 'package:traderscircuit/view/Sidemenu/Sidemenu.dart';
|
||||
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
|
||||
import 'package:traderscircuit/view_model/ContentBytesApi/content_bytes_api.dart';
|
||||
|
||||
class ContentBytes extends StatefulWidget {
|
||||
const ContentBytes({super.key});
|
||||
@@ -65,24 +72,42 @@ class _ContentBytesState extends State<ContentBytes> {
|
||||
"Week of 21st March 2024",
|
||||
"Week of 21st March 2024",
|
||||
];
|
||||
|
||||
ContentBytesController contentBytesController =
|
||||
Get.put(ContentBytesController());
|
||||
@override
|
||||
void initState() {
|
||||
ContentBytesApi().getContentBytesCategoriesData().then((value) {
|
||||
contentBytesController.contentBytesCategoriesModel =
|
||||
ContentBytesCategoriesModel.fromJson(value.data);
|
||||
});
|
||||
ContentBytesApi().getContentBytesData("").then((value) {
|
||||
contentBytesController.contentBytesModel =
|
||||
ContentBytesModel.fromJson(value.data);
|
||||
contentBytesController.isApiCalling.value = false;
|
||||
});
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
key: _scaffoldKey1,
|
||||
backgroundColor: Colors.black,
|
||||
extendBody: true,
|
||||
appBar: CommonAppbar(titleTxt: "Content Bytes"),
|
||||
appBar: const CommonAppbar(titleTxt: "Content Bytes"),
|
||||
body: Stack(
|
||||
children: [
|
||||
CommonBlurLeft(),
|
||||
CommonBlurRight(),
|
||||
const CommonBlurLeft(),
|
||||
const CommonBlurRight(),
|
||||
Stack(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
|
||||
padding:
|
||||
const EdgeInsets.symmetric(horizontal: 16, vertical: 16),
|
||||
child: ListView(
|
||||
children: [
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
DefaultTabController(
|
||||
@@ -139,7 +164,7 @@ class Reads extends StatelessWidget {
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
width: 300,
|
||||
child: CustomTextFormField(
|
||||
leadingIcon: Icon(Icons.search),
|
||||
@@ -168,13 +193,13 @@ class Reads extends StatelessWidget {
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
width: 10,
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Spacer(),
|
||||
const Spacer(),
|
||||
SizedBox(
|
||||
width: 235.w,
|
||||
child: text20W400('"Stock Market Essentials"'),
|
||||
@@ -185,10 +210,10 @@ class Reads extends StatelessWidget {
|
||||
child: text16W400(
|
||||
'A Comprehensive Guide to Understanding the Market'),
|
||||
),
|
||||
Spacer()
|
||||
const Spacer()
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
width: 20,
|
||||
),
|
||||
Column(
|
||||
@@ -213,13 +238,13 @@ class Reads extends StatelessWidget {
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
width: 10,
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Spacer(),
|
||||
const Spacer(),
|
||||
SizedBox(
|
||||
width: 235.w,
|
||||
child: text20W400('"Stock Market Essentials"'),
|
||||
@@ -230,10 +255,10 @@ class Reads extends StatelessWidget {
|
||||
child: text16W400(
|
||||
'A Comprehensive Guide to Understanding the Market'),
|
||||
),
|
||||
Spacer()
|
||||
const Spacer()
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
width: 20,
|
||||
),
|
||||
Column(
|
||||
@@ -275,7 +300,7 @@ class Reads extends StatelessWidget {
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
Colors.white.withOpacity(0.1),
|
||||
Color(0xFFFFFFFF).withOpacity(0.05),
|
||||
const Color(0xFFFFFFFF).withOpacity(0.05),
|
||||
],
|
||||
stops: [
|
||||
0.1,
|
||||
@@ -317,7 +342,7 @@ class Reads extends StatelessWidget {
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
Colors.white.withOpacity(0.1),
|
||||
Color(0xFFFFFFFF).withOpacity(0.05),
|
||||
const Color(0xFFFFFFFF).withOpacity(0.05),
|
||||
],
|
||||
stops: [
|
||||
0.1,
|
||||
@@ -330,7 +355,7 @@ class Reads extends StatelessWidget {
|
||||
// mainAxisAlignment:
|
||||
// MainAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
width: 10,
|
||||
),
|
||||
Image.asset(mostread[index]),
|
||||
@@ -388,7 +413,7 @@ class Audios extends StatelessWidget {
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
width: 300,
|
||||
child: CustomTextFormField(
|
||||
leadingIcon: Icon(Icons.search),
|
||||
@@ -414,8 +439,8 @@ class Audios extends StatelessWidget {
|
||||
Container(
|
||||
height: 550,
|
||||
child: GridView.builder(
|
||||
physics: NeverScrollableScrollPhysics(),
|
||||
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
|
||||
mainAxisExtent: 172,
|
||||
crossAxisCount: 2, // number of items in each row
|
||||
mainAxisSpacing: 8.0, // spacing between rows
|
||||
@@ -431,7 +456,7 @@ class Audios extends StatelessWidget {
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
Colors.white.withOpacity(0.1),
|
||||
Color(0xFFFFFFFF).withOpacity(0.05),
|
||||
const Color(0xFFFFFFFF).withOpacity(0.05),
|
||||
],
|
||||
stops: [
|
||||
0.1,
|
||||
@@ -452,7 +477,7 @@ class Audios extends StatelessWidget {
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 18.sp,
|
||||
child: Icon(Icons.headphones),
|
||||
child: const Icon(Icons.headphones),
|
||||
),
|
||||
SizedBox(
|
||||
width: 5.w,
|
||||
@@ -481,7 +506,7 @@ class Audios extends StatelessWidget {
|
||||
height: 250.h,
|
||||
child: ListView.separated(
|
||||
separatorBuilder: (context, index) {
|
||||
return SizedBox(
|
||||
return const SizedBox(
|
||||
width: 10,
|
||||
);
|
||||
},
|
||||
@@ -500,7 +525,7 @@ class Audios extends StatelessWidget {
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
Colors.white.withOpacity(0.1),
|
||||
Color(0xFFFFFFFF).withOpacity(0.05),
|
||||
const Color(0xFFFFFFFF).withOpacity(0.05),
|
||||
],
|
||||
stops: [
|
||||
0.1,
|
||||
@@ -512,7 +537,7 @@ class Audios extends StatelessWidget {
|
||||
child: Stack(
|
||||
children: [
|
||||
Image.asset(audionewimage[index]),
|
||||
Positioned(
|
||||
const Positioned(
|
||||
right: 5,
|
||||
top: 5,
|
||||
child: CircleAvatar(
|
||||
@@ -526,7 +551,7 @@ class Audios extends StatelessWidget {
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
const SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
Row(
|
||||
@@ -549,7 +574,7 @@ class Audios extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class Videos extends StatelessWidget {
|
||||
class Videos extends StatefulWidget {
|
||||
const Videos({
|
||||
super.key,
|
||||
required this.images,
|
||||
@@ -558,243 +583,301 @@ class Videos extends StatelessWidget {
|
||||
final List<String> images;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
State<Videos> createState() => _VideosState();
|
||||
}
|
||||
|
||||
class _VideosState extends State<Videos> {
|
||||
ContentBytesController contentBytesController =
|
||||
Get.put(ContentBytesController());
|
||||
|
||||
Widget itemFilter(int index) {
|
||||
return Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
const Gap(8),
|
||||
text18W400(
|
||||
contentBytesController
|
||||
.contentBytesCategoriesModel.data![index].title!,
|
||||
texAl: TextAlign.center,
|
||||
),
|
||||
index ==
|
||||
contentBytesController
|
||||
.contentBytesCategoriesModel.data!.length -
|
||||
1
|
||||
? const SizedBox()
|
||||
: const Divider(
|
||||
color: Color(0xFF2C2C2C),
|
||||
thickness: 0.6,
|
||||
endIndent: 0,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget filter() {
|
||||
return PopupMenuButton(
|
||||
icon: Image.asset(
|
||||
"assets/images/png/filter.png",
|
||||
height: 30.h,
|
||||
width: 30.w,
|
||||
),
|
||||
color: const Color(0xFF191919),
|
||||
itemBuilder: (context) {
|
||||
return [
|
||||
PopupMenuItem(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 300,
|
||||
child: CustomTextFormField(
|
||||
leadingIcon: Icon(Icons.search),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
width: 15.w,
|
||||
),
|
||||
Image.asset(
|
||||
"assets/images/png/filter.png",
|
||||
height: 30.h,
|
||||
width: 30.w,
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
),
|
||||
text22W600('Content Bytes'),
|
||||
sizedBoxHeight(8.w),
|
||||
text16W400_DADADA('The Beauty and Power of Video'),
|
||||
sizedBoxHeight(20.h),
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Get.to(() => PlayerWidget());
|
||||
},
|
||||
child: commonGlassContainer(
|
||||
borderradius: 8,
|
||||
width: double.infinity,
|
||||
height: 300.h,
|
||||
customWidget: Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(vertical: 10.h, horizontal: 10.w),
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
height: 200.h,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
'assets/images/png/Rectangle 17934.png'))),
|
||||
child: Center(
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/svg/gridicons_play.svg',
|
||||
height: 56.h,
|
||||
width: 56.w,
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Row(
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 23.r,
|
||||
backgroundImage: AssetImage(
|
||||
'assets/images/png/Ellipse 1494.png'),
|
||||
),
|
||||
sizedBoxWidth(10.w),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
text18W500('Week of 21st February 2024'),
|
||||
// sizedBoxHeight(10.h),
|
||||
text12W400_979797('20k views . 2 days ago'),
|
||||
],
|
||||
)
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
)),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Get.to(() {
|
||||
PlayerWidget();
|
||||
});
|
||||
},
|
||||
child: commonGlassContainer(
|
||||
borderradius: 8,
|
||||
width: double.infinity,
|
||||
height: 300.h,
|
||||
customWidget: Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(vertical: 10.h, horizontal: 10.w),
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
height: 200.h,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
'assets/images/png/Rectangle 17934.png'))),
|
||||
child: Center(
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/svg/gridicons_play.svg',
|
||||
height: 56.h,
|
||||
width: 56.w,
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Row(
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 23.r,
|
||||
backgroundImage: AssetImage(
|
||||
'assets/images/png/Ellipse 1494.png'),
|
||||
),
|
||||
sizedBoxWidth(10.w),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
text18W500('Week of 21st February 2024'),
|
||||
// sizedBoxHeight(10.h),
|
||||
text12W400_979797('20k views . 2 days ago'),
|
||||
],
|
||||
)
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
)),
|
||||
),
|
||||
sizedBoxHeight(15.h),
|
||||
text22W600("Reels"),
|
||||
sizedBoxHeight(25.h),
|
||||
Container(
|
||||
height: 500,
|
||||
child: GridView.builder(
|
||||
physics: NeverScrollableScrollPhysics(),
|
||||
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||
mainAxisExtent: 215,
|
||||
crossAxisCount: 2, // number of items in each row
|
||||
mainAxisSpacing: 8.0, // spacing between rows
|
||||
crossAxisSpacing: 8.0, // spacing between columns
|
||||
),
|
||||
height: (Get.height *
|
||||
contentBytesController
|
||||
.contentBytesCategoriesModel.data!.length) /
|
||||
17,
|
||||
width: 150,
|
||||
child: ListView.builder(
|
||||
padding: EdgeInsets.zero,
|
||||
shrinkWrap: true,
|
||||
itemCount: contentBytesController
|
||||
.contentBytesCategoriesModel.data!.length,
|
||||
itemBuilder: (ctx, index) {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
// contentBytesController.isApiCalling.value = true;
|
||||
Get.back();
|
||||
contentBytesController.filterId =
|
||||
contentBytesController
|
||||
.contentBytesCategoriesModel
|
||||
.data![index]
|
||||
.categoryId!;
|
||||
|
||||
itemCount: 4, // total number of items
|
||||
itemBuilder: (context, index) {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
Get.to(
|
||||
() => Reels(),
|
||||
);
|
||||
},
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
Colors.white.withOpacity(0.1),
|
||||
Color(0xFFFFFFFF).withOpacity(0.05),
|
||||
],
|
||||
stops: [
|
||||
0.1,
|
||||
1,
|
||||
],
|
||||
),
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
log(contentBytesController.filterId.toString());
|
||||
},
|
||||
child: itemFilter(index));
|
||||
}),
|
||||
),
|
||||
// GestureDetector(
|
||||
// onTap: () async {
|
||||
// // contentBytesController.isApiCalling.value = true;
|
||||
// Get.back();
|
||||
// // await InventoriesApi()
|
||||
// // .getInventoriesData(
|
||||
// // searchController.text,
|
||||
// // filterList,
|
||||
// // inventoriesController.fromWarehouse
|
||||
// // ? inventoriesController.wareHouseId
|
||||
// // : 0)
|
||||
// // .then((value) async {
|
||||
// // inventoriesController.inventoriesDataModel.value =
|
||||
// // InventoriesDataModel.fromJson(value.data);
|
||||
|
||||
// // inventoriesController.isApiCalling.value = false;
|
||||
// // });
|
||||
// },
|
||||
// child: Container(
|
||||
// padding:
|
||||
// EdgeInsets.symmetric(horizontal: 30.w, vertical: 10.h),
|
||||
// margin:
|
||||
// EdgeInsets.symmetric(horizontal: 30.w, vertical: 25.h),
|
||||
// decoration: BoxDecoration(
|
||||
// color: AppColors.buttoncolour,
|
||||
// borderRadius: BorderRadius.circular(20)),
|
||||
// child: Center(child: textWhite16('Apply Now')),
|
||||
// ))
|
||||
],
|
||||
))
|
||||
];
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Widget videoCard(Video video) {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
Get.to(() => PlayerWidget(), arguments: {
|
||||
"video_url": video.file,
|
||||
});
|
||||
},
|
||||
child: commonGlassContainer(
|
||||
borderradius: 8,
|
||||
width: double.infinity,
|
||||
height: 300.h,
|
||||
customWidget: Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 10.w),
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
height: 200.h,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
image: DecorationImage(
|
||||
image: NetworkImage(
|
||||
video.image!,
|
||||
))),
|
||||
child: Center(
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/svg/gridicons_play.svg',
|
||||
height: 56.h,
|
||||
width: 56.w,
|
||||
),
|
||||
child: Image.asset(images[index]),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Row(
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 23.r,
|
||||
backgroundImage: const AssetImage(
|
||||
'assets/images/png/Ellipse 1494.png'),
|
||||
),
|
||||
sizedBoxWidth(10.w),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
text18W500(video.title!),
|
||||
// sizedBoxHeight(10.h),
|
||||
text12W400_979797('20k views . 2 days ago'),
|
||||
],
|
||||
)
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Get.to(() {
|
||||
PlayerWidget();
|
||||
});
|
||||
},
|
||||
child: commonGlassContainer(
|
||||
borderradius: 8,
|
||||
width: double.infinity,
|
||||
height: 300.h,
|
||||
customWidget: Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(vertical: 10.h, horizontal: 10.w),
|
||||
child: Column(
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Obx(
|
||||
() => SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
const SizedBox(
|
||||
width: 295,
|
||||
child: CustomTextFormField(
|
||||
leadingIcon: Icon(Icons.search),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
width: 15.w,
|
||||
),
|
||||
filter(),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 10.h,
|
||||
),
|
||||
text22W600('Content Bytes'),
|
||||
sizedBoxHeight(8.w),
|
||||
text16W400_DADADA('The Beauty and Power of Video'),
|
||||
sizedBoxHeight(20.h),
|
||||
contentBytesController.isApiCalling.value
|
||||
? const Column(
|
||||
children: [
|
||||
Container(
|
||||
height: 200.h,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
'assets/images/png/Rectangle 17934.png'))),
|
||||
child: Center(
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/svg/gridicons_play.svg',
|
||||
height: 56.h,
|
||||
width: 56.w,
|
||||
),
|
||||
Gap(50),
|
||||
Center(
|
||||
child: CircularProgressIndicator(
|
||||
color: Color(0xFF9A0000),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Row(
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 23.r,
|
||||
backgroundImage: AssetImage(
|
||||
'assets/images/png/Ellipse 1494.png'),
|
||||
],
|
||||
)
|
||||
: Column(
|
||||
children: [
|
||||
contentBytesController
|
||||
.contentBytesModel.data!.video!.length <
|
||||
1
|
||||
? const SizedBox()
|
||||
: videoCard(contentBytesController
|
||||
.contentBytesModel.data!.video![0]),
|
||||
contentBytesController
|
||||
.contentBytesModel.data!.video!.length <=
|
||||
1
|
||||
? const SizedBox()
|
||||
: sizedBoxHeight(20.h),
|
||||
contentBytesController
|
||||
.contentBytesModel.data!.video!.length <
|
||||
2
|
||||
? const SizedBox()
|
||||
: videoCard(contentBytesController
|
||||
.contentBytesModel.data!.video![1]),
|
||||
sizedBoxHeight(15.h),
|
||||
text22W600("Reels"),
|
||||
sizedBoxHeight(25.h),
|
||||
Container(
|
||||
height: 500,
|
||||
child: GridView.builder(
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
gridDelegate:
|
||||
const SliverGridDelegateWithFixedCrossAxisCount(
|
||||
mainAxisExtent: 215,
|
||||
crossAxisCount: 2, // number of items in each row
|
||||
mainAxisSpacing: 8.0, // spacing between rows
|
||||
crossAxisSpacing: 8.0, // spacing between columns
|
||||
),
|
||||
sizedBoxWidth(10.w),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
text18W500('Week of 21st February 2024'),
|
||||
// sizedBoxHeight(10.h),
|
||||
text12W400_979797('20k views . 2 days ago'),
|
||||
],
|
||||
)
|
||||
],
|
||||
)
|
||||
|
||||
itemCount: 4, // total number of items
|
||||
itemBuilder: (context, index) {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
Get.to(
|
||||
() => const Reels(),
|
||||
);
|
||||
},
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
Colors.white.withOpacity(0.1),
|
||||
const Color(0xFFFFFFFF).withOpacity(0.05),
|
||||
],
|
||||
stops: [
|
||||
0.1,
|
||||
1,
|
||||
],
|
||||
),
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
child: Image.asset(widget.images[index]),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
// sizedBoxHeight(10.h),
|
||||
contentBytesController
|
||||
.contentBytesModel.data!.video!.length <
|
||||
3
|
||||
? const SizedBox()
|
||||
: ListView.builder(
|
||||
physics: NeverScrollableScrollPhysics(),
|
||||
itemCount: contentBytesController
|
||||
.contentBytesModel.data!.video!.length -
|
||||
2,
|
||||
shrinkWrap: true,
|
||||
itemBuilder: (ctx, index) {
|
||||
return Container(
|
||||
margin: EdgeInsets.only(
|
||||
bottom: 20,
|
||||
),
|
||||
child: videoCard(contentBytesController
|
||||
.contentBytesModel
|
||||
.data!
|
||||
.video![index + 2]),
|
||||
);
|
||||
})
|
||||
],
|
||||
),
|
||||
)),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -13,30 +13,22 @@ class PlayerWidget extends StatefulWidget {
|
||||
class _PlayerWidgetState extends State<PlayerWidget> {
|
||||
late VideoPlayerController videoPlayerController;
|
||||
late ChewieController chewieController;
|
||||
|
||||
var videoUrl = Get.arguments["video_url"];
|
||||
@override
|
||||
void initState() {
|
||||
// TODO: implement initState
|
||||
super.initState();
|
||||
_initializePlayer();
|
||||
super.initState();
|
||||
}
|
||||
|
||||
// _initializePlayer() async {
|
||||
// videoPlayerController = VideoPlayerController.networkUrl(Uri.parse(
|
||||
// "https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"));
|
||||
|
||||
// await videoPlayerController.initialize();
|
||||
// initChewie();
|
||||
// }
|
||||
|
||||
_initializePlayer() async {
|
||||
try {
|
||||
videoPlayerController = VideoPlayerController.network(
|
||||
"https://assets.mixkit.co/videos/preview/mixkit-spinning-around-the-earth-29351-large.mp4",
|
||||
videoPlayerController = VideoPlayerController.networkUrl(
|
||||
Uri.parse(videoUrl),
|
||||
);
|
||||
|
||||
await videoPlayerController.initialize();
|
||||
initChewie();
|
||||
setState(() {});
|
||||
} catch (e) {
|
||||
print("Error initializing video player: $e");
|
||||
}
|
||||
|
||||
@@ -41,10 +41,12 @@ class _VerifyOTPState extends State<VerifyOTP> {
|
||||
_verifycheck() async {
|
||||
final isValid = _otpform.currentState?.validate();
|
||||
if (isValid!) {
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
Utils.loader();
|
||||
Map<String, String> updata = {
|
||||
"mobile_number": phonenumber.toString(),
|
||||
"otp": pincode.text,
|
||||
"playerId": prefs.getString("playerId")!,
|
||||
};
|
||||
final resp = await VerifyNumberAPI(updata).verifynumberApi();
|
||||
if (resp.status == ResponseStatus.SUCCESS) {
|
||||
|
||||
Reference in New Issue
Block a user