Commit b7f4483b authored by NguyenTienManh's avatar NguyenTienManh

update 14-2

parent bfc70b22
...@@ -112,16 +112,15 @@ class CommentWidget extends StatelessWidget { ...@@ -112,16 +112,15 @@ class CommentWidget extends StatelessWidget {
) )
],), ],),
), ),
Text(state.commentModel.data![index].courseType!), Text(state.commentModel.data![index].courseKeyword!=null?state.commentModel.data![index].courseKeyword!:'Null',style: const TextStyle(fontWeight: FontWeight.bold),),
Padding( Padding(
padding: const EdgeInsets.fromLTRB(10, 0, 10, 0), padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
child: Expanded( child:
child: Text(state.commentModel.data![index].content!,style: TextStyle(fontSize: 15), Text(state.commentModel.data![index].content!=null?state.commentModel.data![index].content!:'Null',style: const TextStyle(fontSize: 15),
softWrap: false, softWrap: false,
maxLines: 4, maxLines: 4,
overflow: TextOverflow.ellipsis), overflow: TextOverflow.ellipsis),
), ),
),
], ],
); );
}, },
...@@ -134,9 +133,7 @@ class CommentWidget extends StatelessWidget { ...@@ -134,9 +133,7 @@ class CommentWidget extends StatelessWidget {
children: [ children: [
Container( Container(
padding: const EdgeInsets.all(10), padding: const EdgeInsets.all(10),
child: Center(child: SmoothPageIndicator( child: Center(child: SmoothPageIndicator( controller: _pageController,
controller: _pageController,
count: state.commentModel.data!.length, count: state.commentModel.data!.length,
effect: const WormEffect(), effect: const WormEffect(),
onDotClicked: (index) => _pageController.animateToPage(index, duration: const Duration(milliseconds: 1), curve: Curves.bounceOut), onDotClicked: (index) => _pageController.animateToPage(index, duration: const Duration(milliseconds: 1), curve: Curves.bounceOut),
...@@ -144,12 +141,6 @@ class CommentWidget extends StatelessWidget { ...@@ -144,12 +141,6 @@ class CommentWidget extends StatelessWidget {
), ),
],), ],),
],); ],);
// Column(
// children: [
// Text(state.commentModel.data![index].courseName!),
// //Text(state.commentModel.data![index].content!),
// ],
// );
}, },
onPageChanged: (int index) { onPageChanged: (int index) {
......
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import '../model/course_model.dart'; import '../model/course_model.dart';
// https://imes-api.myitsol.com/api/v1/public/search-courses
// https://imes-api.myitsol.com/api/v1/public/courses/lesson-free?startRecord=0&size=10
class RemoteCourse{ class RemoteCourse{
Future<CourseModel?> getCourseModel() async{ Future<CourseModel?> getCourseModel() async{
var dio = Dio(); var dio = Dio();
String url = ("https://imes-api.myitsol.com/api/v1/public/search-courses"); String url = ("https://imes-api.myitsol.com/api/v1/public/courses/lesson-free?startRecord=0&size=10");
var response = await dio.get(url); var response = await dio.get(url);
if(response.statusCode == 200){ if(response.statusCode == 200){
var json = response.data; var json = response.data;
......
...@@ -5,6 +5,7 @@ import 'package:flutter_swiper_view/flutter_swiper_view.dart'; ...@@ -5,6 +5,7 @@ import 'package:flutter_swiper_view/flutter_swiper_view.dart';
import 'package:ongbut_ntmanh/app/module/course/model/list_data.dart'; import 'package:ongbut_ntmanh/app/module/course/model/list_data.dart';
import 'package:ongbut_ntmanh/const/colors.dart'; import 'package:ongbut_ntmanh/const/colors.dart';
import '../../../../res/images/images.dart';
import '../../../ui/search_page.dart'; import '../../../ui/search_page.dart';
import '../../coursedetail/widgets/course_detail.dart'; import '../../coursedetail/widgets/course_detail.dart';
import '../bloc/course_bloc.dart'; import '../bloc/course_bloc.dart';
...@@ -90,8 +91,9 @@ class CourseWidget extends StatelessWidget { ...@@ -90,8 +91,9 @@ class CourseWidget extends StatelessWidget {
fit: BoxFit.fill,height: 200,width: double.maxFinite, fit: BoxFit.fill,height: 200,width: double.maxFinite,
errorBuilder: (BuildContext context, Object exception, errorBuilder: (BuildContext context, Object exception,
StackTrace? stackTrace) { StackTrace? stackTrace) {
return const Text('😢'); return Image.asset(Images.load_err);
},), },
),
), ),
Padding( Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),
...@@ -115,7 +117,8 @@ class CourseWidget extends StatelessWidget { ...@@ -115,7 +117,8 @@ class CourseWidget extends StatelessWidget {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (_) => CourseDetailWidget(listData[index].courseId!,listData[index].image!=null?listData[index].image!:'https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG'), builder: (_) => CourseDetailWidget(listData[index].courseId!,listData[index].image!=null?listData[index].image!
:'https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG'),
)).then((value) { )).then((value) {
if (value != null && value is bool && value) {} if (value != null && value is bool && value) {}
......
...@@ -3,9 +3,9 @@ import 'package:flutter/material.dart'; ...@@ -3,9 +3,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:ongbut_ntmanh/app/module/coursedetail/model/chapters.dart'; import 'package:ongbut_ntmanh/app/module/coursedetail/model/chapters.dart';
import 'package:ongbut_ntmanh/app/module/coursedetail/model/course_detail_model.dart'; import 'package:ongbut_ntmanh/app/module/coursedetail/model/course_detail_model.dart';
import 'package:ongbut_ntmanh/app/module/lession/widgets/lession_widget.dart';
import 'package:ongbut_ntmanh/const/colors.dart'; import 'package:ongbut_ntmanh/const/colors.dart';
import 'package:ongbut_ntmanh/widgets/widgets_util.dart'; import 'package:ongbut_ntmanh/widgets/widgets_util.dart';
import '../../../../res/images/images.dart';
import '../bloc/course_detail_bloc.dart'; import '../bloc/course_detail_bloc.dart';
// dang loi // dang loi
...@@ -27,16 +27,19 @@ class CourseDetailWidget extends StatelessWidget { ...@@ -27,16 +27,19 @@ class CourseDetailWidget extends StatelessWidget {
appBar: AppBar(title: const Text('Chi Tiet Khoa Hoc'),), appBar: AppBar(title: const Text('Chi Tiet Khoa Hoc'),),
body: body:
Column(children: [ Column(children: [
Image.network(image, fit: BoxFit.fill,height: checkLandscape(context)?getHeight(context)*0.5:getHeight(context)*0.3,width: double.maxFinite,), Image.network(image, fit: BoxFit.fill,height: checkLandscape(context)?getHeight(context)*0.5:getHeight(context)*0.3,width: double.maxFinite,
errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) {
return Image.asset(Images.load_err,fit: BoxFit.fill,height: checkLandscape(context)?getHeight(context)*0.5:getHeight(context)*0.3,width: double.maxFinite,);
},
),
Row( Row(
children: [ children: [
Text('ID Course = ',style: TextStyle(fontSize: 15,color: AppColors.red_light)), const Text('ID Course = ',style: TextStyle(fontSize: 15,color: AppColors.red_light)),
Text(courseId), Text(courseId),
], ],
), ),
BlocConsumer<CourseDetailBloc, CourseDetailState>( Expanded(
child: BlocConsumer<CourseDetailBloc, CourseDetailState>(
listener: (context, state) async {}, listener: (context, state) async {},
builder: (context, state) { builder: (context, state) {
return return
...@@ -58,19 +61,23 @@ class CourseDetailWidget extends StatelessWidget { ...@@ -58,19 +61,23 @@ class CourseDetailWidget extends StatelessWidget {
} }
if(chapters.isNotEmpty){ if(chapters.isNotEmpty){
return return
SingleChildScrollView( Column(
child: Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.fromLTRB(10, 10, 0, 0), padding: const EdgeInsets.fromLTRB(10, 10, 0, 0),
child: Row( child: Column(
children: [
// Text(chapters[0].name.toString(),style: const TextStyle(fontSize: 15,fontWeight: FontWeight.bold),
// softWrap: false,
// maxLines: 1,
// overflow: TextOverflow.ellipsis),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
const Text('Thong Tin chi tiet',style: TextStyle(fontWeight: FontWeight.bold,fontSize: 15),), const Text('Thong Tin chi tiet',style: TextStyle(fontWeight: FontWeight.bold,fontSize: 15),),
const SizedBox(width: 100),
TextButton( TextButton(
child: Text('Nhan xet ve khoa hoc'), child: Text('Nhan xet ve khoa hoc'),
onPressed: () { onPressed: () {
...@@ -79,14 +86,38 @@ class CourseDetailWidget extends StatelessWidget { ...@@ -79,14 +86,38 @@ class CourseDetailWidget extends StatelessWidget {
) )
], ],
), ),
],
),
), ),
Text(chapters[0].name!), Text(chapters.length.toString()),
Text(chapters[0].listLesson![0].name!), Expanded(
Text(chapters[0].listLesson![0].createUser!), child: Padding(
Text(chapters[0].listLesson![0].listPart![0].partType!), padding: const EdgeInsets.fromLTRB(10, 10, 0, 0),
LessionWidget( chapters[0].listLesson![0].lessonId!=null?chapters[0].listLesson![0].lessonId!:'fb228efa-7b32-419e-98b4-a6d5135f4361' ), child:
],), ListView.builder(
itemCount: chapters.length,
physics: const AlwaysScrollableScrollPhysics(),
itemBuilder: (context, index) {
return
ExpansionTile(
title: Text(chapters[index].name!),
); );
},
),
),
),
// ExpansionTile(
// title: null,
//
// ),
// Text(chapters[0].listLesson![0].name!),
// Text(chapters[0].listLesson![0].createUser!),
// Text(chapters[0].listLesson![0].listPart![0].partType!),
// LessionWidget( chapters[0].listLesson![0].lessonId!=null?chapters[0].listLesson![0].lessonId!
// :'fb228efa-7b32-419e-98b4-a6d5135f4361' ),
],);
} }
} }
return const Text('Default CourseDetail!!!!!'); return const Text('Default CourseDetail!!!!!');
...@@ -94,6 +125,7 @@ class CourseDetailWidget extends StatelessWidget { ...@@ -94,6 +125,7 @@ class CourseDetailWidget extends StatelessWidget {
); );
} }
), ),
),
],) ],)
); );
} }
......
...@@ -4,6 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; ...@@ -4,6 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:ongbut_ntmanh/app/module/new/model/new_model.dart'; import 'package:ongbut_ntmanh/app/module/new/model/new_model.dart';
import '../../../../const/colors.dart'; import '../../../../const/colors.dart';
import '../../../../res/images/images.dart';
import '../../../../widgets/widgets_util.dart'; import '../../../../widgets/widgets_util.dart';
import '../bloc/new_bloc.dart'; import '../bloc/new_bloc.dart';
...@@ -72,7 +73,7 @@ class NewWidget extends StatelessWidget { ...@@ -72,7 +73,7 @@ class NewWidget extends StatelessWidget {
// ), // ),
// ], // ],
), ),
height: checkLandscape(context)?getHeight(context)*0.5:getHeight(context)*0.3, height: checkLandscape(context)?getHeight(context)*0.5:getHeight(context)*0.35,
width: double.maxFinite, width: double.maxFinite,
child: child:
ListView.builder( ListView.builder(
...@@ -105,24 +106,21 @@ class NewWidget extends StatelessWidget { ...@@ -105,24 +106,21 @@ class NewWidget extends StatelessWidget {
ClipRRect( ClipRRect(
borderRadius: BorderRadius.circular(8.0), borderRadius: BorderRadius.circular(8.0),
child: child:
Image.network(state.newModel.data![index].urlImageRepresent!=null?state.newModel.data![index].urlImageRepresent!:'https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG', Image.network(
state.newModel.data![index].urlImageRepresent!,
fit: BoxFit.fill,height:checkLandscape(context)?getHeight(context)*0.3:getHeight(context)*0.2,width: double.maxFinite, fit: BoxFit.fill,height:checkLandscape(context)?getHeight(context)*0.3:getHeight(context)*0.2,width: double.maxFinite,
errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) {
return const Text('😢'); return Image.asset(Images.load_err,fit: BoxFit.fill,height: checkLandscape(context)?getHeight(context)*0.3:getHeight(context)*0.2,width: double.maxFinite,);
}, },
), ),
), ),
Padding( Padding(
padding: const EdgeInsets.all(0.0), padding: const EdgeInsets.fromLTRB(0, 20, 0, 0),
child: child: Text(state.newModel.data![index].title!),
Text(state.newModel.data![index].title!),
//Text('abc'),
), ),
Padding( Padding(
padding: const EdgeInsets.all(0.0), padding: const EdgeInsets.fromLTRB(0, 5, 0, 0),
child: child: Text(state.newModel.data![index].title!),
Text(state.newModel.data![index].title!),
//Text('123'),
), ),
], ],
), ),
......
...@@ -6,6 +6,7 @@ import 'package:ongbut_ntmanh/app/module/coursedetail/model/course_detail_model. ...@@ -6,6 +6,7 @@ import 'package:ongbut_ntmanh/app/module/coursedetail/model/course_detail_model.
import 'package:ongbut_ntmanh/app/module/school/model/list_data.dart'; import 'package:ongbut_ntmanh/app/module/school/model/list_data.dart';
import 'package:ongbut_ntmanh/const/colors.dart'; import 'package:ongbut_ntmanh/const/colors.dart';
import '../../../../res/images/images.dart';
import '../../../ui/search_page.dart'; import '../../../ui/search_page.dart';
import '../../coursedetail/widgets/course_detail.dart'; import '../../coursedetail/widgets/course_detail.dart';
import '../bloc/school_bloc.dart'; import '../bloc/school_bloc.dart';
...@@ -93,12 +94,13 @@ class SchoolWidget extends StatelessWidget { ...@@ -93,12 +94,13 @@ class SchoolWidget extends StatelessWidget {
ClipRRect( ClipRRect(
borderRadius: BorderRadius.circular(8.0), borderRadius: BorderRadius.circular(8.0),
child: child:
Image.network(listData[index].image!=null?listData[index].image!:'https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG', Image.network(listData[index].image!,
fit: BoxFit.fill,height: 200,width: double.maxFinite, fit: BoxFit.fill,height: 200,width: double.maxFinite,
errorBuilder: (BuildContext context, Object exception, errorBuilder: (BuildContext context, Object exception,
StackTrace? stackTrace) { StackTrace? stackTrace) {
return const Text('😢'); return Image.asset(Images.load_err);
},), },
),
), ),
Padding( Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),
......
...@@ -3,8 +3,8 @@ import 'package:flutter/cupertino.dart'; ...@@ -3,8 +3,8 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:ongbut_ntmanh/app/module/course/model/list_data.dart'; import 'package:ongbut_ntmanh/app/module/course/model/list_data.dart';
import 'package:ongbut_ntmanh/widgets/widgets_util.dart';
import '../../const/colors.dart'; import '../../const/colors.dart';
import '../../res/images/images.dart';
import '../module/course/bloc/course_bloc.dart'; import '../module/course/bloc/course_bloc.dart';
import '../module/course/model/course_model.dart'; import '../module/course/model/course_model.dart';
import '../module/coursedetail/widgets/course_detail.dart'; import '../module/coursedetail/widgets/course_detail.dart';
...@@ -36,15 +36,20 @@ class SearchWidget extends StatelessWidget { ...@@ -36,15 +36,20 @@ class SearchWidget extends StatelessWidget {
if(state is CourseSuccess){ if(state is CourseSuccess){
listData = state.courseModel.data!.listData!; listData = state.courseModel.data!.listData!;
return return
CustomScrollView( Container(
height: double.maxFinite,
width: double.maxFinite,
color: AppColors.background,
alignment: Alignment.topCenter,
child: CustomScrollView(
scrollDirection: Axis.vertical,// listview vuot ngang scrollDirection: Axis.vertical,// listview vuot ngang
slivers:<Widget>[ slivers:<Widget>[
SliverGrid( SliverGrid(
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 300, maxCrossAxisExtent: 350,
mainAxisSpacing: 1, mainAxisSpacing: 0,
crossAxisSpacing: 0, crossAxisSpacing: 0,
childAspectRatio: 1, childAspectRatio: 0.65,
), ),
delegate: SliverChildBuilderDelegate( delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) { (BuildContext context, int index) {
...@@ -62,6 +67,7 @@ class SearchWidget extends StatelessWidget { ...@@ -62,6 +67,7 @@ class SearchWidget extends StatelessWidget {
), ),
), ),
], ],
),
); );
} }
return const Text('CourseFailed'); return const Text('CourseFailed');
...@@ -85,7 +91,7 @@ Widget _courseList( listData, BuildContext context) { ...@@ -85,7 +91,7 @@ Widget _courseList( listData, BuildContext context) {
// }); // });
}, },
child: Padding( child: Padding(
padding: const EdgeInsets.fromLTRB(15, 10, 15, 10), padding: const EdgeInsets.fromLTRB(15, 15, 15, 15),
child: child:
Container( Container(
decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), decoration: BoxDecoration(borderRadius: BorderRadius.circular(10),
...@@ -97,12 +103,53 @@ Widget _courseList( listData, BuildContext context) { ...@@ -97,12 +103,53 @@ Widget _courseList( listData, BuildContext context) {
child: child:
Image.network(listData.image!=null?listData.image!:'https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG', Image.network(listData.image!=null?listData.image!:'https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG',
fit: BoxFit.fill, fit: BoxFit.fill,
height: checkLandscape(context)?getHeight(context)*0.25:getHeight(context)*0.15, errorBuilder: (BuildContext context, Object exception,
StackTrace? stackTrace) {
return Image.asset(Images.load_err);
},
height: 130,
// height: checkLandscape(context)?getHeight(context)*0.25:getHeight(context)*0.15,
width: double.maxFinite, width: double.maxFinite,
), ),
), ),
Text(listData.keyword!=null?listData.keyword:'Null'), Padding(
Text(listData.name!=null?listData.name:'Null'), padding: const EdgeInsets.fromLTRB(10, 10, 10,10),
child: Container(
alignment: Alignment.centerLeft,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: [
Padding(
padding: const EdgeInsets.fromLTRB(0, 10, 0, 0),
child: Text(listData.name ?? 'Null',softWrap: false,
maxLines: 1,
overflow: TextOverflow.ellipsis),
),
Text(listData.keyword ?? 'Null',softWrap: false,
maxLines: 1,
overflow: TextOverflow.ellipsis),
Padding(
padding: const EdgeInsets.fromLTRB(0, 40, 0, 0),
child: OutlinedButton(
onPressed: () { },
style: OutlinedButton.styleFrom(
minimumSize: const Size.fromHeight(35),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),
backgroundColor: Colors.white,// background
primary: AppColors.primary, // foreground text
side: const BorderSide(color: AppColors.primary), // foreground border
),
child: const Text('Dang Ky', style: TextStyle(fontSize: 15)),
),
),
],
),
),
),
], ],
), ),
), ),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment