movie and tvshow list
This commit is contained in:
@@ -5,6 +5,7 @@ import 'package:multimedia/widgets/tvshowDetailsCrewBox.dart';
|
||||
import 'package:multimedia/widgets/tvshowDetailsCastBox.dart';
|
||||
import 'package:multimedia/widgets/tvshowDetailsGenreBox.dart';
|
||||
import 'package:multimedia/widgets/tvshowDetailsOverviewBox.dart';
|
||||
import 'package:multimedia/widgets/tvshowDetailsSettingsBox.dart';
|
||||
import 'package:transparent_image/transparent_image.dart';
|
||||
|
||||
import '../data/tvshows.dart';
|
||||
@@ -98,6 +99,20 @@ class TVShowDetailsScreen extends StatelessWidget {
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
left: 10.0,
|
||||
right: 10.0,
|
||||
top: 5.0,
|
||||
bottom: 5.0,
|
||||
),
|
||||
child: TVShowDetailsSettingsBox(
|
||||
downloadLink: tvShow.download,
|
||||
localPath: tvShow.localPath,
|
||||
resolution: tvShow.resolution,
|
||||
cliffhanger: tvShow.cliffhanger,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
]),
|
||||
|
||||
@@ -0,0 +1,210 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:multimedia/constants.dart';
|
||||
|
||||
class TVShowDetailsSettingsBox extends StatefulWidget {
|
||||
TVShowDetailsSettingsBox({
|
||||
super.key,
|
||||
required this.downloadLink,
|
||||
required this.localPath,
|
||||
required this.resolution,
|
||||
required this.cliffhanger,
|
||||
});
|
||||
|
||||
String downloadLink;
|
||||
String localPath;
|
||||
String resolution;
|
||||
int cliffhanger;
|
||||
|
||||
@override
|
||||
State<TVShowDetailsSettingsBox> createState() =>
|
||||
_TVShowDetailsSettingsBoxState();
|
||||
}
|
||||
|
||||
class _TVShowDetailsSettingsBoxState extends State<TVShowDetailsSettingsBox> {
|
||||
var resolutions = [
|
||||
'360p',
|
||||
'480i',
|
||||
'480p',
|
||||
'576i',
|
||||
'576p',
|
||||
'720i',
|
||||
'720p',
|
||||
'1080i',
|
||||
'1080p',
|
||||
'1440i',
|
||||
'1440p',
|
||||
'2160p',
|
||||
];
|
||||
|
||||
var _curResolution = '';
|
||||
var _curCliffhanger = 0;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_curResolution = widget.resolution;
|
||||
_curCliffhanger = widget.cliffhanger;
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
color: BoxColor.backgroundColor,
|
||||
borderRadius: const BorderRadius.all(
|
||||
Radius.circular(10.0),
|
||||
),
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
left: 5.0,
|
||||
right: 5.0,
|
||||
top: 10.0,
|
||||
bottom: 5.0,
|
||||
),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: BoxColor.titleBackgroundColor,
|
||||
borderRadius: const BorderRadius.all(
|
||||
Radius.circular(10.0),
|
||||
),
|
||||
),
|
||||
child: Expanded(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
children: [
|
||||
Text(
|
||||
'Settings',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: BoxColor.titleColor),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 10,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
left: 5.0,
|
||||
right: 5.0,
|
||||
top: 5.0,
|
||||
bottom: 5.0,
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
const Text(
|
||||
'Download Link',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
TextFormField(
|
||||
decoration: const InputDecoration(
|
||||
border: OutlineInputBorder(),
|
||||
labelText: 'Download Link',
|
||||
),
|
||||
initialValue: widget.downloadLink,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
flex: 10,
|
||||
child: Column(
|
||||
children: [
|
||||
const Text(
|
||||
'Local Path',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
TextFormField(
|
||||
decoration: const InputDecoration(
|
||||
border: OutlineInputBorder(),
|
||||
labelText: 'Local Path',
|
||||
),
|
||||
initialValue: widget.localPath,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
const SizedBox(
|
||||
width: 5,
|
||||
),
|
||||
Expanded(
|
||||
flex: 2,
|
||||
child: Column(
|
||||
children: [
|
||||
const Text(
|
||||
'Resolution',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
DropdownButtonFormField(
|
||||
decoration: const InputDecoration(
|
||||
border: OutlineInputBorder(),
|
||||
labelText: 'Resolution',
|
||||
),
|
||||
dropdownColor: const Color.fromARGB(255, 127, 127, 127),
|
||||
value: _curResolution,
|
||||
items: resolutions.map((String res) {
|
||||
return DropdownMenuItem(value: res, child: Text(res));
|
||||
}).toList(),
|
||||
onChanged: (String? newValue) {
|
||||
setState(() {
|
||||
_curResolution = newValue!;
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: Column(
|
||||
children: [
|
||||
const Text(
|
||||
'Cliffhanger',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
const SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
Checkbox(
|
||||
side: MaterialStateBorderSide.resolveWith(
|
||||
(states) => BorderSide(width: 1.0, color: Colors.grey),
|
||||
),
|
||||
value: (_curCliffhanger == 1),
|
||||
onChanged: (bool? value) {
|
||||
setState(() {
|
||||
_curCliffhanger = value == true ? 1 : 0;
|
||||
});
|
||||
},
|
||||
),
|
||||
const SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user