Commit 62966e8d authored by NguyenTienManh's avatar NguyenTienManh

update

parent 06d48e47
......@@ -7,6 +7,7 @@ import 'package:ongbut_ntmanh/const/colors.dart';
import '../../../../res/images/images.dart';
import '../../../../widgets/widgets_util.dart';
import '../../../ui/search_page.dart';
import '../../coursedetail/widgets/course_detail.dart';
import '../bloc/course_bloc.dart';
import '../model/course_model.dart';
......@@ -35,7 +36,14 @@ class CourseWidget extends StatelessWidget {
TextButton(
child: const Text('Xem Them>>'),
onPressed: () {
print('Pressed');
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => SearchWidget(),
)).then((value) {
if (value != null && value is bool && value) {}
});
}
)
],
......
......@@ -4,8 +4,6 @@ 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 '../model/data.dart';
import '../bloc/course_detail_bloc.dart';
......@@ -54,10 +52,8 @@ class CourseDetailWidget extends StatelessWidget {
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,),
LessionWidget( chapters[0].listLesson![0].lessonId! ),
LessionWidget( chapters[0].listLesson![0].lessonId!=null?chapters[0].listLesson![0].lessonId!:'fb228efa-7b32-419e-98b4-a6d5135f4361' ),
],);
// LessionWidget( chapters[0].listLesson![0].lessonId! );
}
}
return const Text('Default CourseDetail!!!!!');
......@@ -65,8 +61,6 @@ class CourseDetailWidget extends StatelessWidget {
);
}
),
);
}
}
......
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:ongbut_ntmanh/app/module/lession/widgets/play_video.dart';
import '../../playvideo/page/play_video.dart';
import '../bloc/lesson_bloc.dart';
import '../model/lesson_model.dart';
......
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/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/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(title: Text(YoutubePlayer.convertUrlToId(widget.link).toString()),),
body: Container(child: player),
),
);
}
}
......@@ -8,6 +8,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/bloc/course_detail_bloc.dart';
import '../../coursedetail/widgets/course_detail.dart';
import '../bloc/school_bloc.dart';
......@@ -40,7 +41,14 @@ class SchoolWidget extends StatelessWidget {
TextButton(
child: Text('Xem Them >>'),
onPressed: () {
print('Pressed');
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => SearchWidget(),
)).then((value) {
if (value != null && value is bool && value) {}
});
}
)
],
......
......@@ -120,7 +120,9 @@ class _HomePageState extends State<HomePage> {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => SearchPage(commentModel))).then((value) {
builder: (_) => SearchWidget(),
)).then((value) {
if (value != null && value is bool && value) {}
});
},
......
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';
class SearchPage extends StatelessWidget {
CommentModel? commentModel;
SearchPage(this.commentModel,{Key? key}) : super(key: key);
final scrollController = ScrollController();
class SearchWidget extends StatelessWidget {
SearchWidget({Key? key}) : super(key: key);
CourseModel? courseModel;
List<ListData> listData = [];
@override
Widget build(BuildContext context) {
return Scaffold(
// appBar: AppBar(title: const Text('Details!')),
body: Text(commentModel!.mess!.code.toString()),
);
BlocProvider.of<CourseBloc>(context).add(
RequestCourse(context: context));
return
Scaffold(
appBar: AppBar(title: Text('asdsad'),),
body:
BlocBuilder<CourseBloc, CourseState>(
builder: (context, state) {
if(state is CourseInitial){
const CircularProgressIndicator();
}
if(state is CourseLoading){
return const CircularProgressIndicator();
}
if(state is CourseFailed){
return Text(state.message.toString());
}
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,
),
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');
}
),);
}
}
Widget _courseList( listData, BuildContext context) {
return InkWell(
onTap: (){
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => CourseDetailWidget(listData.courseId!,listData.image!=null?listData.image!:'https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG'),
)).then((value) {
if (value != null && value is bool && value) {}
});
},
child: Padding(
padding: const EdgeInsets.fromLTRB(15, 10, 15, 10),
child:
Container(
decoration: BoxDecoration(borderRadius: BorderRadius.circular(10),
color: AppColors.white),
child: Column(
children: <Widget>[
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child:
Image.network(listData.image!=null?listData.image!:'https://oss.myitsol.com/imes-public/2022/12/11/neymar_145527553.PNG',
fit: BoxFit.fill,height: 120,width: double.maxFinite,),
),
Text(listData.keyword!=null?listData.keyword:'Null'),
Text(listData.name!=null?listData.name:'Null'),
],
),
),
),
);
}
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