MIF_E31222854_MOBILE/lib/view/home/submateri/submateri.dart

160 lines
4.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:ta_tahsin/core/theme.dart';
import 'package:youtube_player_flutter/youtube_player_flutter.dart';
class SubMateriPage extends StatefulWidget {
final int id;
final String title;
final String description;
final String videoLink;
final String intro;
const SubMateriPage({
super.key,
required this.id,
required this.title,
required this.description,
required this.videoLink,
required this.intro,
});
@override
_SubMateriPageState createState() => _SubMateriPageState();
}
class _SubMateriPageState extends State<SubMateriPage> {
late YoutubePlayerController _controller;
@override
void initState() {
super.initState();
_controller = YoutubePlayerController(
initialVideoId: YoutubePlayer.convertUrlToId(widget.videoLink)!,
flags: const YoutubePlayerFlags(autoPlay: false, mute: false),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(50),
child: Card(
elevation: 4,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.zero,
),
margin: EdgeInsets.zero,
child: AppBar(
backgroundColor:
secondPrimaryColor,
title: Text(
widget.title,
style: TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
leading: IconButton(
icon: const Icon(Icons.arrow_back),
color: Colors.white,
onPressed: () {
Navigator.pop(context);
},
),
),
),
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: double.infinity,
height: 200,
decoration: BoxDecoration(
color: Colors.grey[200],
borderRadius: BorderRadius.circular(10),
),
child: YoutubePlayer(
controller: _controller,
showVideoProgressIndicator: true,
),
),
Container(
color: secondPrimaryColor1,
padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 10),
width: double.infinity,
child: Text(
"Materi Pengantar",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: blackColor,
),
),
),
const SizedBox(height: 10),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 24.0),
child: Text(
widget.intro,
style: TextStyle(fontSize: 16, color: blackColor),
),
),
Expanded(
child: Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16.0,
vertical: 20,
),
child: Container(
width: double.infinity,
height: 50,
decoration: BoxDecoration(
color: secondPrimaryColor,
borderRadius: BorderRadius.circular(8),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.1),
offset: Offset(0, -4),
blurRadius: 6,
),
],
),
child: TextButton(
onPressed: () {
context.go(
'/latihan',
extra: {'id': widget.id},
);
},
child: Text(
"Mulai Berlatih",
style: TextStyle(
fontSize: 16,
color: Colors.white,
fontWeight: FontWeight.bold,
),
),
),
),
),
),
),
],
),
);
}
@override
void dispose() {
super.dispose();
_controller.dispose();
}
}