Commit 7b73b6a0 authored by NguyenTienManh's avatar NguyenTienManh

update

parent 62966e8d
...@@ -68,13 +68,13 @@ class CommentWidget extends StatelessWidget { ...@@ -68,13 +68,13 @@ class CommentWidget extends StatelessWidget {
width: double.maxFinite, width: double.maxFinite,
child: child:
PageView.builder( PageView.builder(
itemCount: state.commentModel!.data!.length, itemCount: state.commentModel.data!.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return return
Column( Column(
children: [ children: [
Text(state.commentModel!.data![index].courseId!), Text(state.commentModel.data![index].courseName!),
Text(state.commentModel!.data![index].courseName!), //Text(state.commentModel.data![index].content!),
], ],
); );
}, },
......
...@@ -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/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/app/module/lession/widgets/lession_widget.dart';
import 'package:ongbut_ntmanh/const/colors.dart';
import '../bloc/course_detail_bloc.dart'; import '../bloc/course_detail_bloc.dart';
...@@ -24,6 +25,15 @@ class CourseDetailWidget extends StatelessWidget { ...@@ -24,6 +25,15 @@ class CourseDetailWidget extends StatelessWidget {
Scaffold( Scaffold(
appBar: AppBar(title: const Text('Chi Tiet Khoa Hoc'),), appBar: AppBar(title: const Text('Chi Tiet Khoa Hoc'),),
body: body:
Column(children: [
Image.network(image!=null?image:'https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG',
fit: BoxFit.fill,height: 200,width: double.maxFinite,),
Row(
children: [
Text('ID Course = ',style: TextStyle(fontSize: 15,color: AppColors.red_light)),
Text(courseId),
],
),
BlocConsumer<CourseDetailBloc, CourseDetailState>( BlocConsumer<CourseDetailBloc, CourseDetailState>(
listener: (context, state) async {}, listener: (context, state) async {},
builder: (context, state) { builder: (context, state) {
...@@ -45,13 +55,13 @@ class CourseDetailWidget extends StatelessWidget { ...@@ -45,13 +55,13 @@ class CourseDetailWidget extends StatelessWidget {
// fit: BoxFit.fill,height: 200,width: double.maxFinite,); // fit: BoxFit.fill,height: 200,width: double.maxFinite,);
chapters = state.courseDetailModel.data!.chapters!; chapters = state.courseDetailModel.data!.chapters!;
if(chapters.isEmpty == true){ if(chapters.isEmpty == true){
return const Text('Chua Co Noi Dung Khoa Hoc'); return const Text('Chua Co Noi Dung Khoa Hoc',style: TextStyle(fontSize: 15,color: AppColors.red_light),);
} }
if(chapters.isEmpty == false){ if(chapters.isEmpty == false){
return return
Column(children: [ Column(children: [
Image.network(image!=null?image:'https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG', // Image.network(image!=null?image:'https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG',
fit: BoxFit.fill,height: 200,width: double.maxFinite,), // fit: BoxFit.fill,height: 200,width: double.maxFinite,),
LessionWidget( chapters[0].listLesson![0].lessonId!=null?chapters[0].listLesson![0].lessonId!:'fb228efa-7b32-419e-98b4-a6d5135f4361' ), LessionWidget( chapters[0].listLesson![0].lessonId!=null?chapters[0].listLesson![0].lessonId!:'fb228efa-7b32-419e-98b4-a6d5135f4361' ),
],); ],);
} }
...@@ -61,6 +71,7 @@ class CourseDetailWidget extends StatelessWidget { ...@@ -61,6 +71,7 @@ class CourseDetailWidget extends StatelessWidget {
); );
} }
), ),
],)
); );
} }
} }
......
...@@ -15,9 +15,17 @@ class LessonBloc extends Bloc<LessonEvent, LessonState> { ...@@ -15,9 +15,17 @@ class LessonBloc extends Bloc<LessonEvent, LessonState> {
} }
Future<void> _requestLesson(RequestLesson event, Emitter<LessonState> emit) async { Future<void> _requestLesson(RequestLesson event, Emitter<LessonState> emit) async {
if (event.lessonID.isEmpty) {
emit(const LessonFailed('lessonID is Empty!'));
emit(const LessonResetState());
return;
}
RemoteLesson remoteLesson = RemoteLesson(); RemoteLesson remoteLesson = RemoteLesson();
try { try {
LessonModel? lessonModel = await remoteLesson.getLessonModel(); LessonModel? lessonModel = await remoteLesson.getLessonModel(
context: event.context,
lessonID: event.lessonID,
);
emit(LessonSuccess(lessonModel!)); emit(LessonSuccess(lessonModel!));
} catch (e) { } catch (e) {
emit(const LessonFailed('request false2!')); emit(const LessonFailed('request false2!'));
......
...@@ -9,8 +9,10 @@ abstract class LessonEvent extends Equatable { ...@@ -9,8 +9,10 @@ abstract class LessonEvent extends Equatable {
class RequestLesson extends LessonEvent { class RequestLesson extends LessonEvent {
final BuildContext context; final BuildContext context;
final String lessonID;
const RequestLesson({ const RequestLesson({
required this.context, required this.context,
required this.lessonID,
}); });
@override @override
......
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import '../model/lesson_model.dart'; import '../model/lesson_model.dart';
// https://imes-api.myitsol.com/api/v1/student/course/part?lessonId=fb228efa-7b32-419e-98b4-a6d5135f4361 // https://imes-api.myitsol.com/api/v1/student/course/part?lessonId=fb228efa-7b32-419e-98b4-a6d5135f4361
class RemoteLesson{ class RemoteLesson{
Future<LessonModel?> getLessonModel() async{ Future<LessonModel?> getLessonModel({required BuildContext context,required String lessonID}) async{
var dio = Dio(); var dio = Dio();
String url = ("https://imes-api.myitsol.com/api/v1/student/course/part?lessonId=fb228efa-7b32-419e-98b4-a6d5135f4361"); String url = ("https://imes-api.myitsol.com/api/v1/student/course/part?lessonId=");
var response = await dio.get(url); var response = await dio.get(url+lessonID);
if(response.statusCode == 200){ if(response.statusCode == 200){
var json = response.data; var json = response.data;
return LessonModel.fromJson(json); return LessonModel.fromJson(json);
......
...@@ -21,7 +21,7 @@ class _LessionWidgetState extends State<LessionWidget> { ...@@ -21,7 +21,7 @@ class _LessionWidgetState extends State<LessionWidget> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
BlocProvider.of<LessonBloc>(context).add( BlocProvider.of<LessonBloc>(context).add(
RequestLesson(context: context)); RequestLesson(context: context, lessonID: widget.lessonID));
return return
// Container(child: Text(lessonID.toString()),); // Container(child: Text(lessonID.toString()),);
SingleChildScrollView( SingleChildScrollView(
...@@ -30,6 +30,7 @@ class _LessionWidgetState extends State<LessionWidget> { ...@@ -30,6 +30,7 @@ class _LessionWidgetState extends State<LessionWidget> {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Text(widget.lessonID),
Padding( Padding(
padding: const EdgeInsets.fromLTRB(10, 10, 0, 0), padding: const EdgeInsets.fromLTRB(10, 10, 0, 0),
child: Row( child: Row(
......
// import 'package:flutter/cupertino.dart';
// import 'package:flutter/material.dart';
// import 'package:flutter/services.dart';
// import 'package:youtube_player_flutter/youtube_player_flutter.dart';
//
// class PlayVideoPage extends StatefulWidget {
// String link;
// PlayVideoPage({required this.link,Key? key}) : super(key: key);
//
// @override
// State<PlayVideoPage> createState() => _PlayVideoPageState();
// }
//
// class _PlayVideoPageState extends State<PlayVideoPage> {
//
// late YoutubePlayerController _controller;
//
//
//
// // late TextEditingController _idController;
// // late TextEditingController _seekToController;
//
// // final List<String> _ids = [
// // 'nPt8bK2gbaU',
// // ];
// @override
// void initState() {
// super.initState();
// _controller =
// YoutubePlayerController(
//
// // initialVideoId: "nPt8bK2gbaU",
// // initialVideoId: widget.link,
// initialVideoId: YoutubePlayer.convertUrlToId(widget.link).toString(),
//
// flags: const YoutubePlayerFlags(
// mute: false,
// autoPlay: true,
// disableDragSeek: false,
// loop: false,
// isLive: false,
// forceHD: false,
// enableCaption: true,
//
// ),
// );
// }
//
//
//
// @override
// void deactivate() {
// // Pauses video while navigating to next page.
// _controller.pause();
// super.deactivate();
// }
//
// @override
// void dispose() {
// _controller.dispose();
// // _idController.dispose();
// // _seekToController.dispose();
// super.dispose();
// }
//
// @override
// Widget build(BuildContext context) {
// return
//
// YoutubePlayerBuilder(
// onExitFullScreen: () {
// SystemChrome.setPreferredOrientations(DeviceOrientation.values);
// },
// player: YoutubePlayer(
// controller: _controller,
// showVideoProgressIndicator: true,
// progressIndicatorColor: Colors.blueAccent,
// // onReady: () {
// // _isPlayerReady = true;
// // },
// // onEnded: (data) {
// // _controller
// // .load(_ids[(_ids.indexOf(data.videoId) + 1) % _ids.length]);
// // },
// ),
// builder: (context, player) => Scaffold(
// appBar: AppBar(),
// body: Container(child: player),
// ),
// );
// }
// }
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/const/colors.dart';
import '../bloc/login_bloc.dart'; import '../bloc/login_bloc.dart';
import '../model/login_model.dart'; import '../model/login_model.dart';
...@@ -13,7 +14,12 @@ class LoginPage extends StatelessWidget { ...@@ -13,7 +14,12 @@ class LoginPage extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return return
BlocConsumer<LoginBloc, LoginState>( BlocConsumer<LoginBloc, LoginState>(
listener: (context, state) async {}, listener: (context, state) async {
// hàm sẽ đc gọi mỗi khi có sự thay đổi state của Bloc.ví dụ:
// if(state is MyStateSuccess){
// // Thực hiện hành động
// }
},
builder: (context, state) { builder: (context, state) {
return return
Column( Column(
...@@ -41,7 +47,11 @@ class LoginPage extends StatelessWidget { ...@@ -41,7 +47,11 @@ class LoginPage extends StatelessWidget {
), ),
OutlinedButton( OutlinedButton(
style: OutlinedButton.styleFrom(minimumSize: Size(200, 50)), style: OutlinedButton.styleFrom(minimumSize: Size(400, 50),backgroundColor: AppColors.primary,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),
),
onPressed: () async { onPressed: () async {
BlocProvider.of<LoginBloc>(context).add( BlocProvider.of<LoginBloc>(context).add(
RequestLogin( RequestLogin(
...@@ -51,6 +61,7 @@ class LoginPage extends StatelessWidget { ...@@ -51,6 +61,7 @@ class LoginPage extends StatelessWidget {
}, },
child: Text("Submit Form".toUpperCase(), child: Text("Submit Form".toUpperCase(),
style: const TextStyle( style: const TextStyle(
color: AppColors.white,
fontWeight: FontWeight.bold),) fontWeight: FontWeight.bold),)
), ),
BlocBuilder<LoginBloc, LoginState>( BlocBuilder<LoginBloc, LoginState>(
......
...@@ -14,9 +14,6 @@ class PlayVideoPage extends StatefulWidget { ...@@ -14,9 +14,6 @@ class PlayVideoPage extends StatefulWidget {
class _PlayVideoPageState extends State<PlayVideoPage> { class _PlayVideoPageState extends State<PlayVideoPage> {
late YoutubePlayerController _controller; late YoutubePlayerController _controller;
// late TextEditingController _idController; // late TextEditingController _idController;
// late TextEditingController _seekToController; // late TextEditingController _seekToController;
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:ongbut_ntmanh/app/module/comment/model/comment_model.dart'; import 'package:ongbut_ntmanh/app/module/comment/model/comment_model.dart';
import 'package:ongbut_ntmanh/app/module/coursedetail/widgets/course_detail.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 '../../../res/images/images.dart';
...@@ -8,7 +7,6 @@ import '../../module/comment/widgets/comment_widget.dart'; ...@@ -8,7 +7,6 @@ import '../../module/comment/widgets/comment_widget.dart';
import '../../module/course/widgets/course_widget.dart'; import '../../module/course/widgets/course_widget.dart';
import '../../module/login/widget/login_widget.dart'; import '../../module/login/widget/login_widget.dart';
import '../../module/new/widgets/new_widget.dart'; import '../../module/new/widgets/new_widget.dart';
import '../../module/register/model/school_model.dart';
import '../../module/school/widgets/school_widget.dart'; import '../../module/school/widgets/school_widget.dart';
import '../search_page.dart'; import '../search_page.dart';
...@@ -37,19 +35,6 @@ class HomePage extends StatefulWidget { ...@@ -37,19 +35,6 @@ class HomePage extends StatefulWidget {
class _HomePageState extends State<HomePage> { class _HomePageState extends State<HomePage> {
CommentModel? commentModel; CommentModel? commentModel;
// final List<String> items = [
// '2001',
// '2002',
// '2003',
// '2004',
// '2005',
// '2006',
// '2007',
// '2008',
// ];
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
...@@ -63,7 +48,6 @@ class _HomePageState extends State<HomePage> { ...@@ -63,7 +48,6 @@ class _HomePageState extends State<HomePage> {
Container( Container(
alignment: Alignment.center, alignment: Alignment.center,
transformAlignment: Alignment.center, transformAlignment: Alignment.center,
// margin: EdgeInsets.fromLTRB(20, 0, 20, 0),
height: checkLandscape(context)?getHeight(context)*0.6:getHeight(context)*0.22, height: checkLandscape(context)?getHeight(context)*0.6:getHeight(context)*0.22,
width: checkLandscape(context)?getWidth(context)*1:getWidth(context)*1, width: checkLandscape(context)?getWidth(context)*1:getWidth(context)*1,
decoration: BoxDecoration( decoration: BoxDecoration(
......
import 'dart:async'; import 'dart:async';
import 'package:flutter/cupertino.dart'; 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 '../../const/colors.dart'; import '../../const/colors.dart';
import '../../res/images/images.dart';
import '../module/comment/model/comment_model.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';
...@@ -23,7 +19,7 @@ class SearchWidget extends StatelessWidget { ...@@ -23,7 +19,7 @@ class SearchWidget extends StatelessWidget {
RequestCourse(context: context)); RequestCourse(context: context));
return return
Scaffold( Scaffold(
appBar: AppBar(title: Text('asdsad'),), appBar: AppBar(title: Text('Tat ca cac khoa hoc'),),
body: body:
BlocBuilder<CourseBloc, CourseState>( BlocBuilder<CourseBloc, CourseState>(
builder: (context, state) { builder: (context, state) {
......
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