问题描述
Class MyYoutube {
final int index ;
final String link; // youtube Link
MyYoutube(this.index,this.link); }
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:Flutter/material.dart';
import 'package:youtube_player_Flutter/youtube_player_Flutter.dart';
class VideoPlayer extends StatefulWidget {
@override
_VideoPlayerState createState() => _VideoPlayerState();
}
class _VideoPlayerState extends State<VideoPlayer> {
YoutubePlayerController _controller = YoutubePlayerController(
initialVideoId: '',flags: YoutubePlayerFlags(
autoplay: false,mute: false,));
@override
Widget build(BuildContext context) {
Future<List> MyVideo() async {
var url = ' 10.0.0.2/api/link.PHP';
var respons = http.get(url);
var data = jsonDecode(respons.body);
for (var x in data) {
MyYoutube newvideo = MyYoutube(x['index'],x['title_k'],x['title_a'],x['aya'],x['link'],x['activity_k'],x['activity_a'],x['act_id']);
video.add(newvideo);
}
return video;
}
return Scaffold(
body: Container(
child: YoutubePlayer(
controller: _controller,showVideoProgressIndicator: true,progressIndicatorColor: Colors.blueAccent,),));
}
}
问题是如何在YouTube控制器中使用从未来获得的链接?
解决方法
非常感谢,我自己解决了问题,将Video Player Controller移到了将来的构建器中,并将初始Video Id的值设置为链接获取表单数据库。
return FutureBuilder(
future: fetchDigrees(),builder: (context,snapshot) {
Map rdata = ModalRoute.of(context).settings.arguments;
var lang = rdata['lang'];
if (snapshot.data == null) {
return Center(
child: Text("Loading"),);
} else {
YoutubePlayerController _controller = YoutubePlayerController(
initialVideoId: snapshot.data[0].link,flags: YoutubePlayerFlags(
autoPlay: false,mute: false,));
return Container(
显示视频播放器,并且正常工作
YoutubePlayer(
controller: _controller,showVideoProgressIndicator: true,progressIndicatorColor: Colors.blueAccent,),