88 lines
2.0 KiB
Dart
88 lines
2.0 KiB
Dart
|
import 'dart:convert';
|
||
|
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:openmediacentermobile/screen_loading.dart';
|
||
|
|
||
|
import '../api/api.dart';
|
||
|
|
||
|
class ActorView extends StatefulWidget {
|
||
|
const ActorView({Key? key, required this.videoId}) : super(key: key);
|
||
|
final int videoId;
|
||
|
|
||
|
@override
|
||
|
State<ActorView> createState() => _ActorViewState();
|
||
|
}
|
||
|
|
||
|
class _ActorViewState extends State<ActorView> {
|
||
|
late Future<List<Actor>> _data;
|
||
|
|
||
|
@override
|
||
|
void initState() {
|
||
|
setState(() {
|
||
|
_data = loadData();
|
||
|
});
|
||
|
super.initState();
|
||
|
}
|
||
|
|
||
|
Future<List<Actor>> loadData() async {
|
||
|
final data = await API
|
||
|
.query("actor", "getActorsOfVideo", {'MovieId': widget.videoId});
|
||
|
if (data == 'null') {
|
||
|
return [];
|
||
|
}
|
||
|
final d = jsonDecode(data);
|
||
|
|
||
|
List<Actor> dta = (d as List).map((e) => Actor.fromJson(e)).toList();
|
||
|
|
||
|
return dta;
|
||
|
}
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
return FutureBuilder(
|
||
|
future: _data,
|
||
|
builder: (context, AsyncSnapshot<List<Actor>> snapshot) {
|
||
|
if (snapshot.hasError) {
|
||
|
return Text("Error");
|
||
|
} else if (snapshot.hasData) {
|
||
|
final actors = snapshot.data;
|
||
|
if (actors?.isEmpty ?? true) {
|
||
|
return Text("no actors available");
|
||
|
} else {
|
||
|
return Column(children: _renderActors(snapshot.data!));
|
||
|
}
|
||
|
} else {
|
||
|
return ScreenLoading();
|
||
|
}
|
||
|
},
|
||
|
);
|
||
|
}
|
||
|
|
||
|
List<Widget> _renderActors(List<Actor> actors) {
|
||
|
return actors
|
||
|
.map((e) => Text(
|
||
|
e.name,
|
||
|
style: TextStyle(color: Colors.black),
|
||
|
))
|
||
|
.toList(growable: false);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class Actor {
|
||
|
int actorId;
|
||
|
String name;
|
||
|
String thumbnail;
|
||
|
|
||
|
Actor(this.actorId, this.name, this.thumbnail);
|
||
|
|
||
|
factory Actor.fromJson(dynamic json) {
|
||
|
return Actor(json['ActorId'] as int, json['Name'] as String,
|
||
|
json['Thumbnail'] as String);
|
||
|
}
|
||
|
|
||
|
@override
|
||
|
String toString() {
|
||
|
return 'Actor{ActorId: $actorId, Name: $name, Thumbnail: $thumbnail}';
|
||
|
}
|
||
|
}
|