gpt4 book ai didi

flutter - 输入带有要从互联网上获取的按钮的textField中视频的URL

转载 作者:行者123 更新时间:2023-12-03 04:38:18 24 4
gpt4 key购买 nike

我是 Dart 和 Dart 的新手。这让我陷了三天。我的目标是拥有一个文本框和一个按钮,而用户可以输入视频的网址并将其加载到应用程序中。希望您能够帮助我。顺便说一句,我已经有一个默认的网址,因此已经显示了视频,因此文本字段和按钮的目的是供用户更改。这就是我现在所做的。

 @override
void initState() {
super.initState();
//MEDIA_URL is already declared
_controller = VideoPlayerController.network(MEDIA_URL)
..initialize().then((_) {
setState(() {
_controller = TextEditingController();
});
}

Widget _buildInput() {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(
controller: _controller,
decoration: InputDecoration(hintText: "Enter the URL"),
),
Container(
alignment: Alignment.center,
child: RaisedButton(
onPressed: () => print("pressed"),
child: Text("load"),
),
),
],
);
}

最佳答案

您可以在下面复制粘贴运行完整代码
您可以对_controller进行操作,调用pause,然后重新初始化_controller以播放其他视频路径
程式码片段

onPressed: () async {
await _controller.pause();
MEDIA_URL = _textEditingController.text;
_controller = VideoPlayerController.network(MEDIA_URL);
await _controller.initialize();
setState(() {});
await _controller.play();
}
工作演示
enter image description here
完整的代码
import 'package:video_player/video_player.dart';
import 'package:flutter/material.dart';

void main() => runApp(VideoApp());

class VideoApp extends StatefulWidget {
@override
_VideoAppState createState() => _VideoAppState();
}

class _VideoAppState extends State<VideoApp> {
VideoPlayerController _controller;
TextEditingController _textEditingController = TextEditingController();
String MEDIA_URL =
'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4';
@override
void initState() {
super.initState();
_textEditingController.text =
"https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4";

_controller = VideoPlayerController.network(MEDIA_URL)
..initialize().then((_) {
// Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
setState(() {});
});
}

Widget _buildInput() {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(
controller: _textEditingController,
decoration: InputDecoration(hintText: "Enter the URL"),
),
Container(
alignment: Alignment.center,
child: RaisedButton(
onPressed: () async {
await _controller.pause();
MEDIA_URL = _textEditingController.text;
_controller = VideoPlayerController.network(MEDIA_URL);
await _controller.initialize();
setState(() {});
await _controller.play();
},
child: Text("load"),
),
),
],
);
}

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Video Demo',
home: SafeArea(
child: Scaffold(
body: Column(
children: [
Center(
child: _controller.value.initialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: Container(),
),
_buildInput(),
],
),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
_controller.value.isPlaying
? _controller.pause()
: _controller.play();
});
},
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
),
),
);
}

@override
void dispose() {
super.dispose();
_controller.dispose();
}
}

关于flutter - 输入带有要从互联网上获取的按钮的textField中视频的URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63711243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com