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 { 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(); } }