Cómo devolver un widget antes de videoplayercontroller.file (). Inicializar (). Cuando sea complejo (); ¿ha completado? -- flutter campo con dart camp Relacionados El problema

How to return a widget before VideoPlayerController.file().initialize().whenComplete(); has completed?


1
vote

problema

Español

Actualmente estoy tratando de devolver un widget en un FutureBuilder() . Aquí es lo que parece mi código:

FutureBuilder:

  Widget build(BuildContext context) {   return Scaffold(     appBar: AppBar(       title: Text('Content'),     ),     body: FutureBuilder<String>(       future: downloadRequest(),         builder: (BuildContext context, AsyncSnapshot<String> snapshot)         {           if(snapshot.hasData)           {             if(arguments["file_type"] == "video/mp4")             {               _controller = VideoPlayerController.file(new File(snapshot.data));                _initializeVideoPlayerFuture = _controller.initialize();                _initializeVideoPlayerFuture.whenComplete(() => buildVideo());             }             else             {               return Center(                 child:                   Text("Invalid data type")                 );             }           }           else           {             return SizedBox(               child: CircularProgressIndicator(),               width: 60,               height: 60,             );           }         }     ),   );   

buildvideo:

  Future<Column> buildVideo() async   {     return Column(       children: <Widget>[         AspectRatio(           aspectRatio: _controller.value.aspectRatio,           child: VideoPlayer(_controller),         ),         FloatingActionButton(           onPressed: () {             setState(() {               if (_controller.value.isPlaying) {                 _controller.pause();               }               else {                 _controller.play();               }             });           },           child: Icon(             _controller.value.isPlaying ? Icons.pause : Icons                 .play_arrow,           ),         ),       ],     ); }   

El problema es que, dado que este código se ejecuta dentro de FutureBuilder() , requiere que se devuelva un 99887776644 . Si ejecuto el código anterior, tira un error.

¿Cómo puedo mostrar un widget Spinner mientras espero _initializeVideoPlayerFuture completar?

Original en ingles

I am currently trying to return a widget in a FutureBuilder(). Here is what my code looks like:

FutureBuilder:

Widget build(BuildContext context) {   return Scaffold(     appBar: AppBar(       title: Text('Content'),     ),     body: FutureBuilder<String>(       future: downloadRequest(),         builder: (BuildContext context, AsyncSnapshot<String> snapshot)         {           if(snapshot.hasData)           {             if(arguments["file_type"] == "video/mp4")             {               _controller = VideoPlayerController.file(new File(snapshot.data));                _initializeVideoPlayerFuture = _controller.initialize();                _initializeVideoPlayerFuture.whenComplete(() => buildVideo());             }             else             {               return Center(                 child:                   Text("Invalid data type")                 );             }           }           else           {             return SizedBox(               child: CircularProgressIndicator(),               width: 60,               height: 60,             );           }         }     ),   ); 

buildVideo:

Future<Column> buildVideo() async   {     return Column(       children: <Widget>[         AspectRatio(           aspectRatio: _controller.value.aspectRatio,           child: VideoPlayer(_controller),         ),         FloatingActionButton(           onPressed: () {             setState(() {               if (_controller.value.isPlaying) {                 _controller.pause();               }               else {                 _controller.play();               }             });           },           child: Icon(             _controller.value.isPlaying ? Icons.pause : Icons                 .play_arrow,           ),         ),       ],     ); } 

The problem is that since this code runs within FutureBuilder(), it requires a widget to be returned. If I run the above code it throws an error.

How can I display a Spinner widget whilst I wait for _initializeVideoPlayerFuture to complete?

     
     
     

Lista de respuestas


Relacionados problema

1  Ordenar en la lista <Dynamic> obtiene dinámica en lugar de int en el comparador  ( Sort on listdynamic gets dynamic instead of int in comparator ) 
Soy nuevo en revolotear y parece que no puede ordenar la lista Código de imagen: _getConSites(BuildContext context) async { var conSitesRes = awai...

6  ¿Cómo registro múltiples manejadores para un httpserver, en Dart?  ( How do i register multiple handlers for a httpserver in dart ) 
(Estoy usando la nueva versión de Lib v2 de DART: IO) Me gustaría registrar múltiples manejadores para un HTTPSERVER, específicamente un WebSocketTransforma...

1  Llame a un método de un componente web y responda a los eventos  ( Call a method of a web component and respond to events ) 
Estoy trabajando en un proyecto DART donde he creado un elemento personalizado con el paquete WEB_UI que tiene alguna animación. Lo que esperaba hacer es tene...

2  Angular.dart y el controlador / componente raíz  ( Angular dart and the root controller component ) 
Tengo un programa angular.Dartart y quiero agregar alguna funcionalidad angular al programa principal (fuera de los componentes). He estado leyendo sobre cómo...

0  ¿Cuál es la mejor manera de almacenar los datos codificados JSON en el proyecto DART / Flutter?  ( Whats the best way to store the json encoded data in dart flutter project ) 
Estaba pensando en la gran cantidad de datos que se han pasado por API. Hasta ahora estaba haciendo las cosas como a continuación. El problema que estoy enfre...

1  Obtenga consignos y / o atributos de ClassMirror usando la reflexión en Dart?  ( Obtain getters and or attributes from classmirror using reflection in dart ) 
La versión anterior de Dart fue capaz de obtener conseguidores usando FragmentTransactions3 Como se publica en esta respuesta: https://stackoverflow.co...

0  DART: Cómo despachar correctamente el evento BLOC en otro bloque  ( Dart how to properly dispatch bloc event in another bloc ) 
Necesito acceder a la autenticaciónBLOC en My LoginBloc para que pueda disparar el evento AuthenticationLogin () si el inicio de sesión es exitoso. Lo que hic...

0  Flutter y proveedor: ¿Cómo hago que mi StreamProvider escuche dos valores diferentes?  ( Flutter provider how do i make my streamprovider listen to two different val ) 
Digamos que tengo el siguiente código. El código a continuación solo escucha un valor: AuthService().user . ¿Cómo hago que mi proveedor escuche otro valor? L...

2  Creando un elemento en un espacio de nombres en dardos  ( Creating an element in a namespace in dart ) 
Estoy tratando de crear un elemento en un espacio de nombres en particular en DART. Es esta la mejor manera de hacerlo: document.$dom_createElementNS(names...

1  DARTH GMAIL API 'SEND' MÉTODO 'DETALLANTE DETALLOTETETEQUESTERROR  ( Dart gmail api send method returning detailedapirequesterror ) 
Estoy reconstruyendo Mi sitio web personal en Flutter y necesita enviar un correo electrónico después de que se llena un formulario fuera Qué: Estoy trata...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos