Commit b7f4483b authored by NguyenTienManh's avatar NguyenTienManh

update 14-2

parent bfc70b22
......@@ -112,15 +112,14 @@ 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: const EdgeInsets.fromLTRB(10, 0, 10, 0),
child: Expanded(
child: Text(state.commentModel.data![index].content!,style: TextStyle(fontSize: 15),
softWrap: false,
maxLines: 4,
overflow: TextOverflow.ellipsis),
),
child:
Text(state.commentModel.data![index].content!=null?state.commentModel.data![index].content!:'Null',style: const TextStyle(fontSize: 15),
softWrap: false,
maxLines: 4,
overflow: TextOverflow.ellipsis),
),
],
);
......@@ -134,9 +133,7 @@ class CommentWidget extends StatelessWidget {
children: [
Container(
padding: const EdgeInsets.all(10),
child: Center(child: SmoothPageIndicator(
controller: _pageController,
child: Center(child: SmoothPageIndicator( controller: _pageController,
count: state.commentModel.data!.length,
effect: const WormEffect(),
onDotClicked: (index) => _pageController.animateToPage(index, duration: const Duration(milliseconds: 1), curve: Curves.bounceOut),
......@@ -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) {
......
import 'package:dio/dio.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{
Future<CourseModel?> getCourseModel() async{
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);
if(response.statusCode == 200){
var json = response.data;
......
......@@ -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/const/colors.dart';
import '../../../../res/images/images.dart';
import '../../../ui/search_page.dart';
import '../../coursedetail/widgets/course_detail.dart';
import '../bloc/course_bloc.dart';
......@@ -90,8 +91,9 @@ class CourseWidget extends StatelessWidget {
fit: BoxFit.fill,height: 200,width: double.maxFinite,
errorBuilder: (BuildContext context, Object exception,
StackTrace? stackTrace) {
return const Text('😢');
},),
return Image.asset(Images.load_err);
},
),
),
Padding(
padding: const EdgeInsets.all(10.0),
......@@ -115,7 +117,8 @@ class CourseWidget extends StatelessWidget {
Navigator.push(
context,
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) {
if (value != null && value is bool && value) {}
......
......@@ -3,9 +3,9 @@ import 'package:flutter/material.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/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/widgets/widgets_util.dart';
import '../../../../res/images/images.dart';
import '../bloc/course_detail_bloc.dart';
// dang loi
......@@ -27,72 +27,104 @@ class CourseDetailWidget extends StatelessWidget {
appBar: AppBar(title: const Text('Chi Tiet Khoa Hoc'),),
body:
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(
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),
],
),
BlocConsumer<CourseDetailBloc, CourseDetailState>(
listener: (context, state) async {},
builder: (context, state) {
return
BlocBuilder<CourseDetailBloc, CourseDetailState>(
builder: (context, state) {
if(state is CourseDetailInitial){
return const Text('SchoolInitial');
}
if(state is CourseDetailFailed){
return Text(state.message.toString());
}
if(state is CourseDetailLoading){
return const CircularProgressIndicator();
}
if(state is CourseDetailSuccess){
chapters = state.courseDetailModel.data!.chapters!;
if(chapters.isEmpty){
return const Text('Chua Co Noi Dung Khoa Hoc',style: TextStyle(fontSize: 15,color: AppColors.red_light),);
Expanded(
child: BlocConsumer<CourseDetailBloc, CourseDetailState>(
listener: (context, state) async {},
builder: (context, state) {
return
BlocBuilder<CourseDetailBloc, CourseDetailState>(
builder: (context, state) {
if(state is CourseDetailInitial){
return const Text('SchoolInitial');
}
if(state is CourseDetailFailed){
return Text(state.message.toString());
}
if(chapters.isNotEmpty){
return
SingleChildScrollView(
child: Column(
if(state is CourseDetailLoading){
return const CircularProgressIndicator();
}
if(state is CourseDetailSuccess){
chapters = state.courseDetailModel.data!.chapters!;
if(chapters.isEmpty){
return const Text('Chua Co Noi Dung Khoa Hoc',style: TextStyle(fontSize: 15,color: AppColors.red_light),);
}
if(chapters.isNotEmpty){
return
Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.fromLTRB(10, 10, 0, 0),
child: Row(
child: Column(
children: [
const Text('Thong Tin chi tiet',style: TextStyle(fontWeight: FontWeight.bold,fontSize: 15),),
const SizedBox(width: 100),
TextButton(
child: Text('Nhan xet ve khoa hoc'),
onPressed: () {
print('Pressed');
}
)
// 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: [
const Text('Thong Tin chi tiet',style: TextStyle(fontWeight: FontWeight.bold,fontSize: 15),),
TextButton(
child: Text('Nhan xet ve khoa hoc'),
onPressed: () {
print('Pressed');
}
)
],
),
],
),
),
Text(chapters[0].name!),
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' ),
],),
);
Text(chapters.length.toString()),
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(10, 10, 0, 0),
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!!!!!');
}
);
}
);
}
),
),
],)
);
......
......@@ -4,6 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:ongbut_ntmanh/app/module/new/model/new_model.dart';
import '../../../../const/colors.dart';
import '../../../../res/images/images.dart';
import '../../../../widgets/widgets_util.dart';
import '../bloc/new_bloc.dart';
......@@ -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,
child:
ListView.builder(
......@@ -105,24 +106,21 @@ class NewWidget extends StatelessWidget {
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
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,
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: const EdgeInsets.all(0.0),
child:
Text(state.newModel.data![index].title!),
//Text('abc'),
padding: const EdgeInsets.fromLTRB(0, 20, 0, 0),
child: Text(state.newModel.data![index].title!),
),
Padding(
padding: const EdgeInsets.all(0.0),
child:
Text(state.newModel.data![index].title!),
//Text('123'),
padding: const EdgeInsets.fromLTRB(0, 5, 0, 0),
child: Text(state.newModel.data![index].title!),
),
],
),
......
......@@ -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/const/colors.dart';
import '../../../../res/images/images.dart';
import '../../../ui/search_page.dart';
import '../../coursedetail/widgets/course_detail.dart';
import '../bloc/school_bloc.dart';
......@@ -93,12 +94,13 @@ class SchoolWidget extends StatelessWidget {
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
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,
errorBuilder: (BuildContext context, Object exception,
StackTrace? stackTrace) {
return const Text('😢');
},),
return Image.asset(Images.load_err);
},
),
),
Padding(
padding: const EdgeInsets.all(10.0),
......
......@@ -3,8 +3,8 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.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 '../../res/images/images.dart';
import '../module/course/bloc/course_bloc.dart';
import '../module/course/model/course_model.dart';
import '../module/coursedetail/widgets/course_detail.dart';
......@@ -36,32 +36,38 @@ class SearchWidget extends StatelessWidget {
if(state is CourseSuccess){
listData = state.courseModel.data!.listData!;
return
CustomScrollView(
scrollDirection: Axis.vertical,// listview vuot ngang
slivers:<Widget>[
SliverGrid(
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 300,
mainAxisSpacing: 1,
crossAxisSpacing: 0,
childAspectRatio: 1,
Container(
height: double.maxFinite,
width: double.maxFinite,
color: AppColors.background,
alignment: Alignment.topCenter,
child: CustomScrollView(
scrollDirection: Axis.vertical,// listview vuot ngang
slivers:<Widget>[
SliverGrid(
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 350,
mainAxisSpacing: 0,
crossAxisSpacing: 0,
childAspectRatio: 0.65,
),
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
if (index < listData.length) {
return _courseList(listData[index], context);
} else {
Timer(const Duration(milliseconds: 20), () {
scrollController
.jumpTo(scrollController.position.maxScrollExtent);
});
return const CircularProgressIndicator();
}
},
childCount: listData.length,
),
),
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
if (index < listData.length) {
return _courseList(listData[index], context);
} else {
Timer(const Duration(milliseconds: 20), () {
scrollController
.jumpTo(scrollController.position.maxScrollExtent);
});
return const CircularProgressIndicator();
}
},
childCount: listData.length,
),
),
],
],
),
);
}
return const Text('CourseFailed');
......@@ -85,7 +91,7 @@ Widget _courseList( listData, BuildContext context) {
// });
},
child: Padding(
padding: const EdgeInsets.fromLTRB(15, 10, 15, 10),
padding: const EdgeInsets.fromLTRB(15, 15, 15, 15),
child:
Container(
decoration: BoxDecoration(borderRadius: BorderRadius.circular(10),
......@@ -97,12 +103,53 @@ Widget _courseList( listData, BuildContext context) {
child:
Image.network(listData.image!=null?listData.image!:'https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG',
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,
),
),
Text(listData.keyword!=null?listData.keyword:'Null'),
Text(listData.name!=null?listData.name:'Null'),
Padding(
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