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 createState() => _ActorViewState(); } class _ActorViewState extends State { late Future> _data; @override void initState() { setState(() { _data = loadData(); }); super.initState(); } Future> loadData() async { final data = await API .query("actor", "getActorsOfVideo", {'MovieId': widget.videoId}); if (data == 'null') { return []; } final d = jsonDecode(data); List dta = (d as List).map((e) => Actor.fromJson(e)).toList(); return dta; } @override Widget build(BuildContext context) { return FutureBuilder( future: _data, builder: (context, AsyncSnapshot> 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 _renderActors(List 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}'; } }