Commit 7b73b6a0 authored by NguyenTienManh's avatar NguyenTienManh

update

parent 62966e8d
......@@ -68,13 +68,13 @@ class CommentWidget extends StatelessWidget {
width: double.maxFinite,
child:
PageView.builder(
itemCount: state.commentModel!.data!.length,
itemCount: state.commentModel.data!.length,
itemBuilder: (BuildContext context, int index) {
return
Column(
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';
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 '../bloc/course_detail_bloc.dart';
......@@ -24,43 +25,53 @@ class CourseDetailWidget extends StatelessWidget {
Scaffold(
appBar: AppBar(title: const Text('Chi Tiet Khoa Hoc'),),
body:
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){
// Image.network('https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG',
// fit: BoxFit.fill,height: 200,width: double.maxFinite,);
chapters = state.courseDetailModel.data!.chapters!;
if(chapters.isEmpty == true){
return const Text('Chua Co Noi Dung Khoa Hoc');
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>(
listener: (context, state) async {},
builder: (context, state) {
return
BlocBuilder<CourseDetailBloc, CourseDetailState>(
builder: (context, state) {
if(state is CourseDetailInitial){
return const Text('SchoolInitial');
}
if(chapters.isEmpty == false){
return
if(state is CourseDetailFailed){
return Text(state.message.toString());
}
if(state is CourseDetailLoading){
return const CircularProgressIndicator();
}
if(state is CourseDetailSuccess){
// Image.network('https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG',
// fit: BoxFit.fill,height: 200,width: double.maxFinite,);
chapters = state.courseDetailModel.data!.chapters!;
if(chapters.isEmpty == true){
return const Text('Chua Co Noi Dung Khoa Hoc',style: TextStyle(fontSize: 15,color: AppColors.red_light),);
}
if(chapters.isEmpty == false){
return
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,),
// 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,),
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!!!!!');
}
);
}
),
);
}
),
],)
);
}
}
......
......@@ -15,9 +15,17 @@ class LessonBloc extends Bloc<LessonEvent, LessonState> {
}
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();
try {
LessonModel? lessonModel = await remoteLesson.getLessonModel();
LessonModel? lessonModel = await remoteLesson.getLessonModel(
context: event.context,
lessonID: event.lessonID,
);
emit(LessonSuccess(lessonModel!));
} catch (e) {
emit(const LessonFailed('request false2!'));
......
......@@ -9,8 +9,10 @@ abstract class LessonEvent extends Equatable {
class RequestLesson extends LessonEvent {
final BuildContext context;
final String lessonID;
const RequestLesson({
required this.context,
required this.lessonID,
});
@override
......
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import '../model/lesson_model.dart';
// https://imes-api.myitsol.com/api/v1/student/course/part?lessonId=fb228efa-7b32-419e-98b4-a6d5135f4361
class RemoteLesson{
Future<LessonModel?> getLessonModel() async{
Future<LessonModel?> getLessonModel({required BuildContext context,required String lessonID}) async{
var dio = Dio();
String url = ("https://imes-api.myitsol.com/api/v1/student/course/part?lessonId=fb228efa-7b32-419e-98b4-a6d5135f4361");
var response = await dio.get(url);
String url = ("https://imes-api.myitsol.com/api/v1/student/course/part?lessonId=");
var response = await dio.get(url+lessonID);
if(response.statusCode == 200){
var json = response.data;
return LessonModel.fromJson(json);
......
......@@ -21,7 +21,7 @@ class _LessionWidgetState extends State<LessionWidget> {
@override
Widget build(BuildContext context) {
BlocProvider.of<LessonBloc>(context).add(
RequestLesson(context: context));
RequestLesson(context: context, lessonID: widget.lessonID));
return
// Container(child: Text(lessonID.toString()),);
SingleChildScrollView(
......@@ -30,6 +30,7 @@ class _LessionWidgetState extends State<LessionWidget> {
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(widget.lessonID),
Padding(
padding: const EdgeInsets.fromLTRB(10, 10, 0, 0),
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_bloc/flutter_bloc.dart';
import 'package:ongbut_ntmanh/const/colors.dart';
import '../bloc/login_bloc.dart';
import '../model/login_model.dart';
......@@ -13,7 +14,12 @@ class LoginPage extends StatelessWidget {
Widget build(BuildContext context) {
return
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) {
return
Column(
......@@ -41,7 +47,11 @@ class LoginPage extends StatelessWidget {
),
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 {
BlocProvider.of<LoginBloc>(context).add(
RequestLogin(
......@@ -51,6 +61,7 @@ class LoginPage extends StatelessWidget {
},
child: Text("Submit Form".toUpperCase(),
style: const TextStyle(
color: AppColors.white,
fontWeight: FontWeight.bold),)
),
BlocBuilder<LoginBloc, LoginState>(
......
......@@ -14,9 +14,6 @@ class PlayVideoPage extends StatefulWidget {
class _PlayVideoPageState extends State<PlayVideoPage> {
late YoutubePlayerController _controller;
// late TextEditingController _idController;
// late TextEditingController _seekToController;
......
import 'package:flutter/material.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/widgets/widgets_util.dart';
import '../../../res/images/images.dart';
......@@ -8,7 +7,6 @@ import '../../module/comment/widgets/comment_widget.dart';
import '../../module/course/widgets/course_widget.dart';
import '../../module/login/widget/login_widget.dart';
import '../../module/new/widgets/new_widget.dart';
import '../../module/register/model/school_model.dart';
import '../../module/school/widgets/school_widget.dart';
import '../search_page.dart';
......@@ -37,19 +35,6 @@ class HomePage extends StatefulWidget {
class _HomePageState extends State<HomePage> {
CommentModel? commentModel;
// final List<String> items = [
// '2001',
// '2002',
// '2003',
// '2004',
// '2005',
// '2006',
// '2007',
// '2008',
// ];
@override
Widget build(BuildContext context) {
......@@ -63,7 +48,6 @@ class _HomePageState extends State<HomePage> {
Container(
alignment: Alignment.center,
transformAlignment: Alignment.center,
// margin: EdgeInsets.fromLTRB(20, 0, 20, 0),
height: checkLandscape(context)?getHeight(context)*0.6:getHeight(context)*0.22,
width: checkLandscape(context)?getWidth(context)*1:getWidth(context)*1,
decoration: BoxDecoration(
......
import 'dart:async';
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 '../../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/model/course_model.dart';
import '../module/coursedetail/widgets/course_detail.dart';
......@@ -23,7 +19,7 @@ class SearchWidget extends StatelessWidget {
RequestCourse(context: context));
return
Scaffold(
appBar: AppBar(title: Text('asdsad'),),
appBar: AppBar(title: Text('Tat ca cac khoa hoc'),),
body:
BlocBuilder<CourseBloc, CourseState>(
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