A
Anonymous

Guidelines

import-'package:flutter/material.dart';-import-'package:video_player/video_player.dart';-//-For-video-functionality-import-'package:audioplayers/audioplayers.dart';-//-For-audio-functionality-import-'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';-//-Updated-PDF-viewer-package-class-GuidelinesPage-extends-StatefulWidget-{-@override-_GuidelinesPageState-createState()-=>-_GuidelinesPageState();-}-class-_GuidelinesPageState-extends-State<GuidelinesPage>-{-late-AudioPlayer-_audioPlayer;-bool-isPlaying-=-false;-bool-isPaused-=-false;-String-currentAudioFile-=-"";-late-VideoPlayerController-_videoController;-bool-isVideoPlaying-=-false;-final-List<String>-audioFiles-=-[-"lib/assets/audios/Audio1.mp3",-"lib/assets/audios/Audio2.mp3",-"lib/assets/audios/Audio3.mp3",-"lib/assets/audios/Audio4.mp3",-"lib/assets/audios/Audio5.mp3",-"lib/assets/audios/Audio6.mp3",-"lib/assets/audios/Audio7.mp3",-"lib/assets/audios/Audio8.mp3",-];-final-List<String>-pdfFiles-=-[-"lib/assets/pdfs/CentralElectricity2023.pdf",-"lib/assets/pdfs/ExplosivesRules2008.pdf",-"lib/assets/pdfs/MineRegulations1961_13092023.pdf",-"lib/assets/pdfs/Mines_Creche_Rules-1966.pdf",-"lib/assets/pdfs/Mines_Rescue_Rules-1985.pdf",-"lib/assets/pdfs/Mines_Rules_1955.pdf",-"lib/assets/pdfs/MinesAct1952.pdf",-"lib/assets/pdfs/MineVocational1966.pdf",-"lib/assets/pdfs/The_Factories_Act-1948.pdf",-"lib/assets/pdfs/Coal_Mines_Regulation_2017_Noti.pdf",-"lib/assets/pdfs/The_Oil_Mines_Regulation_2017.pdf",-];-@override-void-initState()-{-super.initState();-//-Initialize-Audio-Player-_audioPlayer-=-AudioPlayer();-//-Initialize-Video-Player-_videoController-=-VideoPlayerController.asset("lib/assets/videos/guidelines_video.mp4")-..initialize().then((_)-{-setState(()-{});-});-}-@override-void-dispose()-{-_audioPlayer.dispose();-_videoController.dispose();-super.dispose();-}-void-playAudio(String-file)-async-{-final-audioCache-=-AudioCache(prefix:-"lib/assets/audios/");-try-{-final-url-=-await-audioCache.load(file);-await-_audioPlayer.play(UrlSource(url.path));-setState(()-{-isPlaying-=-true;-currentAudioFile-=-file;-isPaused-=-false;-});-}-catch-(e)-{-print("Error-playing-audio:-$e");-}-}-void-pauseAudio()-{-_audioPlayer.pause();-setState(()-{-isPlaying-=-false;-isPaused-=-true;-});-}-void-restartAudio()-{-_audioPlayer.stop();-playAudio(currentAudioFile);-setState(()-{-isPaused-=-false;-isPlaying-=-true;-});-}-void-playVideo()-{-setState(()-{-isVideoPlaying-=-true;-});-_videoController.play();-}-void-pauseVideo()-{-setState(()-{-isVideoPlaying-=-false;-});-_videoController.pause();-}-void-restartVideo()-{-setState(()-{-isVideoPlaying-=-false;-});-_videoController.seekTo(Duration.zero);-_videoController.play();-}-@override-Widget-build(BuildContext-context)-{-return-Scaffold(-appBar:-AppBar(-title:-Text("Guidelines"),-),-body:-Padding(-padding:-const-EdgeInsets.all(16.0),-child:-Column(-children:-[-//-Your-image-and-other-widgets-here...-SizedBox(height:-20),-Expanded(-child:-ListView.builder(-itemCount:-audioFiles.length,-itemBuilder:-(context,-index)-{-return-ListTile(-leading:-Icon(Icons.audiotrack),-title:-Text("Audio-Guideline-${index-+-1}"),-trailing:-IconButton(-icon:-Icon(-isPlaying-&&-currentAudioFile-==-audioFiles[index]-?-Icons.pause-:-Icons.play_arrow),-onPressed:-()-{-if-(isPlaying-&&-currentAudioFile-==-audioFiles[index])-{-pauseAudio();-}-else-{-playAudio(audioFiles[index]);-}-},-),-);-},-),-),-SizedBox(height:-20),-Row(-mainAxisAlignment:-MainAxisAlignment.spaceEvenly,-children:-[-ElevatedButton.icon(-icon:-Icon(Icons.picture_as_pdf),-label:-Text("Open-PDFs"),-onPressed:-()-{-Navigator.push(-context,-MaterialPageRoute(-builder:-(context)-=>-PdfViewerPage(pdfFiles:-pdfFiles),-),-);-},-),-ElevatedButton.icon(-icon:-Icon(Icons.video_library),-label:-Text("Guidelines-Video"),-onPressed:-()-{-Navigator.push(-context,-MaterialPageRoute(-builder:-(context)-=>-VideoPlayerPage(),-),-);-},-),-],-),-],-),-),-);-}-}-class-PdfViewerPage-extends-StatelessWidget-{-final-List<String>-pdfFiles;-const-PdfViewerPage({Key?-key,-required-this.pdfFiles})-:-super(key:-key);-@override-Widget-build(BuildContext-context)-{-return-Scaffold(-appBar:-AppBar(-title:-Text("Guidelines-PDFs"),-),-body:-ListView.builder(-itemCount:-pdfFiles.length,-itemBuilder:-(context,-index)-{-String-fileName-=-pdfFiles[index].split('/').last;-return-ListTile(-leading:-Icon(Icons.picture_as_pdf),-title:-Text(fileName),-onTap:-()-{-Navigator.push(-context,-MaterialPageRoute(-builder:-(context)-=>-PdfViewer(pdfFilePath:-pdfFiles[index]),-),-);-},-);-},-),-);-}-}-class-PdfViewer-extends-StatelessWidget-{-final-String-pdfFilePath;-const-PdfViewer({Key?-key,-required-this.pdfFilePath})-:-super(key:-key);-@override-Widget-build(BuildContext-context)-{-return-Scaffold(-appBar:-AppBar(-title:-Text("Viewing-PDF"),-),-body:-Center(-child:-FutureBuilder(-future:-_loadPdf(),-builder:-(context,-snapshot)-{-if-(snapshot.connectionState-==-ConnectionState.waiting)-{-return-CircularProgressIndicator();-}-else-if-(snapshot.hasError)-{-return-Text('Error-loading-PDF');-}-else-{-return-SfPdfViewer.asset(pdfFilePath);-}-},-),-),-);-}-Future<void>-_loadPdf()-async-{-await-Future.delayed(Duration(seconds:-2));-//-Simulate-delay-for-slow-PDFs-}-}-class-VideoPlayerPage-extends-StatefulWidget-{-const-VideoPlayerPage({Key?-key})-:-super(key:-key);-@override-VideoPlayerPageState-createState()-=>-VideoPlayerPageState();-}-class-VideoPlayerPageState-extends-State<VideoPlayerPage>-{-late-VideoPlayerController-_controller;-bool-isVideoPlaying-=-false;-@override-void-initState()-{-super.initState();-_controller-=-VideoPlayerController.asset("lib/assets/videos/guidelines_video.mp4")-..initialize().then((_)-{-setState(()-{});-});-}-@override-void-dispose()-{-_controller.dispose();-super.dispose();-}-void-playVideo()-{-setState(()-{-isVideoPlaying-=-true;-});-_controller.play();-}-void-pauseVideo()-{-setState(()-{-isVideoPlaying-=-false;-});-_controller.pause();-}-void-restartVideo()-{-setState(()-{-isVideoPlaying-=-false;-});-_controller.seekTo(Duration.zero);-_controller.play();-}-@override-Widget-build(BuildContext-context)-{-return-Scaffold(-appBar:-AppBar(-title:-Text("Guidelines-Video"),-),-body:-Center(-child:-_controller.value.isInitialized-?-AspectRatio(-aspectRatio:-_controller.value.aspectRatio,-child:-VideoPlayer(_controller),-)-:-CircularProgressIndicator(),-),-floatingActionButton:-Row(-mainAxisAlignment:-MainAxisAlignment.spaceEvenly,-children:-[-FloatingActionButton(-onPressed:-isVideoPlaying-?-pauseVideo-:-playVideo,-child:-Icon(isVideoPlaying-?-Icons.pause-:-Icons.play_arrow),-),-FloatingActionButton(-onPressed:-restartVideo,-child:-Icon(Icons.restart_alt),-),-],-),-);-}-}

Prompt
Component Preview

About

Explore comprehensive guidelines with audio, video, and PDF resources integrated seamlessly using React and Tailwind CSS for an engaging user experience.

Share

Last updated 1 month ago