Flutter: Consumiendo un API REST ( Future / http ) [ Desde Cero ] - Parte 01

Поделиться
HTML-код
  • Опубликовано: 1 окт 2024
  • En esta ocasión vamos comenzar a consumir una API REST real con un ejemplo completo, consumiendo el API de GiPHY.
    Paquete http: pub.dev/packag...
    Giphy Developer: developers.gip...
    Mejor Hosting: n9.cl/hosting-...
    Curso completo: tinyurl.com/y3...
    Página web: tinyurl.com/y5...
    Facebook: tinyurl.com/yy...
  • НаукаНаука

Комментарии • 113

  • @variprogramacion2458
    @variprogramacion2458 Год назад +13

    Para los que tienen problemas con la parte del Future traten con esto: Future _getGif() async{
    final response = await http.get(Uri.parse("peguen la URL de su api"));
    }

  •  3 года назад +4

    Curso completo: tinyurl.com/y322eobx
    Mejor Hosting: n9.cl/hosting-correcto
    Paquete http: pub.dev/packages/http
    Giphy Developer: developers.giphy.com/
    Página web: tinyurl.com/y5gmvsc6
    Facebook: tinyurl.com/yy568zlt

  • @sebasmorales5701
    @sebasmorales5701 3 года назад +11

    El unico problema de este video es que se acabo :c
    Lo bueno es que ya hay segunda parte
    lo malo es que tambien tiene fin :c

  • @isaaccruznieto6354
    @isaaccruznieto6354 3 года назад +3

    The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type.
    Try adding either a return or a throw statement at the end" este es el error que me sale ayudame xfavor

  • @luisrobertonavarro7581
    @luisrobertonavarro7581 2 года назад +5

    He aprendido mucho, pero evidentemente tenemos que adaptarnos a las cuestiones del NullSafety. Tengo el código exactamanete igual que el video, pero me arroja error al iniciar el for (var item in jsonData["data"]) { Se produjo una excepción.
    _TypeError (type '_InternalLinkedHashMap' is not a subtype of type 'Iterable') Alguien me podría ayudar, gracias!!!

  • @XProcesses
    @XProcesses 3 года назад +6

    Hola Professor ,
    Tengo un error : la URL de Giffy no puede ir dentro de un string .
    Error: The argument type 'String' can't be assigned to the parameter type 'Uri'.

    • @XProcesses
      @XProcesses 3 года назад +4

      Solucion :
      http.get(Uri.parse('swapi.co/api/people'));
      o
      http.get(Uri.https('swapi.co', 'api/people'));

    •  3 года назад +1

      Básicamente es saber que la versión nueva de http pide que se envíe un objeto de tipo Uri. El código que propone Abdelhalim, es correcto, entendiendo que lo que está entre las comillas debe ser la URL que quieres consultar.

    • @henrymosqueradev
      @henrymosqueradev 2 года назад +1

      HTTP.get(Uri.Parse("aqui ´pones la url"));

  • @elrabeltv6014
    @elrabeltv6014 3 года назад +3

    Me gusta tu curso, pero con el update de Flutter esta desactualizado y personas como yo que de verdad vengo desde CERO no consigo continuar, solo da errores y por mucho que leo comentarios y busco no consigo solucionarlo para poder seguir. :(
    Gracias de antemano por el trabajo realizado!

  • @brayanedilcruz7395
    @brayanedilcruz7395 Год назад +2

    por si no les funciona hasta el minuto 16:52, traten de escribir return []; luego del else{}

  • @loveandmakeit6530
    @loveandmakeit6530 2 года назад +1

    dart(argument_type_not_assigned to the param...dart(argument_type_not_assignable) quien me ayuda ;;=)????????????????????????????????????????????????????????????????

  • @aaronzapata7118
    @aaronzapata7118 11 месяцев назад +2

    Hola, buen tutorial, entendí a la perfección y yo creo que la mejor manera de aprender más es programando uno mismo como lo dijiste en uno de tus videos, yo realicé una API REST en visual studio y ya la tengo publicada mediante IIS en windows, ahora el consumir su información casi me resulta un reto ya que en el caso de GIPHY se almacena en una lista llamada "data", en el caso de mi api no tenía ningún nombre la lista donde estaban los datos, así que me dispuse a intentar buscar como acceder a los datos, ya que, sin eso no podía mostrar los datos. Investigando encontré que envés de mandar un jsonDta["NombreLista"] simplemente debia mandar el objeto jsonData, de esa forma logré que se mostraran los datos de mi api. Muchas gracias por el tutorial y me gustan full tus videos.

  • @gabrielperez8577
    @gabrielperez8577 Год назад +1

    Este programa solo se pueden introducir por computadora o pude existir la posibilidad de aplicarlo derechamente al movil

    •  Год назад

      Si te refieres a ver el resultado en un móvil mientras lo programas si se puede. Solo debes activar las opciones de desarrollo en el celular conectarlo al PC.

  • @edgardomolina7993
    @edgardomolina7993 Год назад +1

    Crees q sea posible q actualices el video con la nueva http 0.13

    •  Год назад

      si, tienes toda la razón, ya hace falta una actualización de este vídeo.

  • @juanbenitez7266
    @juanbenitez7266 3 года назад +2

    buenas noches quisiera hacerle una consulta frente a un problema que tengo en flutter, es que realizo una petición que devuelve unos valores pero para realizar otra petición pasando como parámetro uno del los valores que devuelve json, no me permite tomar ese valor y pasarlo a la nueva petición para que m muestre los valores de esta nueva petición según el parámetro recibido

  • @agustingonzalez2395
    @agustingonzalez2395 5 месяцев назад +1

    crees que puedes hacerlo pero con el flutter y el servidor en la misma computadora?

    •  4 месяца назад

      Si se puede, solo debes lanzar el servidor y escuchar en la dirección IP de tu computadora y su respectivo puerto.

  • @juniorcr47
    @juniorcr47 3 года назад +9

    Oye hermano explicas muy bien me atrevería a decirte que explicaste está sección un poco mejor que otro profesores que udemy estoy suscrito

    •  3 года назад +3

      Gracias por tus palabras amigo. En Udemy hay muy buenos profesores así que es un honor escuchar eso. Jaja.

    • @gideonjonathan1984
      @gideonjonathan1984 3 года назад

      I know I am quite off topic but do anybody know a good site to stream new movies online?

    • @edisonmorgan9199
      @edisonmorgan9199 3 года назад

      @Gideon Jonathan Flixportal

    • @gideonjonathan1984
      @gideonjonathan1984 3 года назад

      @Edison Morgan Thank you, I signed up and it seems to work :) Appreciate it!!

    • @edisonmorgan9199
      @edisonmorgan9199 3 года назад

      @Gideon Jonathan you are welcome xD

  • @miltonserrano2734
    @miltonserrano2734 4 месяца назад

    para los que tienen problemas con Future a mi se me corrigio agregando y cambiandolo por: late final _listadoGifs...saludos

  • @estebanlopez95
    @estebanlopez95 11 месяцев назад

    Hola tengo un problema y esto es lo que me tira flutter (error: A non-null value must be returned since the return type 'List' doesn't allow null.)

  • @pablogonzalezrobles4429
    @pablogonzalezrobles4429 3 года назад +4

    Pregunta. No sería mejor usar un try catch en vez del if else porque pueden pasar varias cosas raras en la api como error de escrito, nulos, etc. Solo pregunto pero muy bien vídeo. Muy explicativo

    •  3 года назад +2

      Muy buena pregunta. Podría usarse, lo que pasa es que las api pueden devolver valores variados. Si una api esta controlando los errores desde el backend, pueden devolver un código 404 por ejemplo, con un mensaje diciendo que no se encontró lo que se buscaba. La petición sería exitosa, devolvería información así que el try la dejaría pasar. Con el if puedo verificar el resultado y si viene con un código 200 que por convención se usa cuando todo salió bien en la API.
      Si tu api no valida los errores en el backend, entonces si tiene que usarse si o si un Try Catch.

    • @pablogonzalezrobles4429
      @pablogonzalezrobles4429 3 года назад +1

      @ buen punto de visto. Sigue así. Muy buen contenido, claro y conciso que es lo que se necesita en los tutoriales de flutter. Espero que puedas subir a futuro videos acerca de layout, de sus jerarquías y clásicos errores como colocar expande dentro de otro que no es flexible y da error, que me pasó hace unos días y me tomó horas llegar a la respuesta por tener poco conocimiento acerca delos widget contenedores

  • @chotrufa
    @chotrufa 3 года назад +3

    hola, muy buen video, pero no se si podrias explicar como hacer una peticion donde mandes un parametro, por ejemplo, yo quisiera en el caso de los gif que sean los que son de navidad, entonces que yo pueda pasar como parametro navidad y solo salgan esos

  • @SofiaSoto-mr1qs
    @SofiaSoto-mr1qs 6 месяцев назад +1

    jajajaja genial el curso, gracias por el conocimiento y x relajar con memes, muy bueno!

  • @fabulososcuentosymas9008
    @fabulososcuentosymas9008 Год назад +1

    class DataApi {
    String t;
    String i";
    DataApi(t, i) {
    this.t = t;
    this.i = i;
    }
    }
    Tal como lo escribes, me da error, parece que el String no puede ser null, por lo que le puse String t=""; String i=""; ahora, no se si es correcto hacer eso o si representara un problema mas adelante, me puedes guiar?
    Non-nullable instance field 't' and 'i' must be initialized.
    Try adding an initializer expression, or add a field initializer in this constructor, or mark it 'late'

    •  Год назад

      Para crear las Class te recomiendo este sitio web: app.quicktype.io/ elige como lenguaje Dart y el te generará el código para crearla, ya con las validaciones de Non-nullable y los métodos para crear instancias. Muy útil.

  • @lgomez1290
    @lgomez1290 3 года назад +4

    excelente tutorial solo que en android studio tuve error http.get(url) en android studio me decía que necesitaba un tipo de dato Uri no String pero convirtiéndolo a ese dato me funciono bien

    •  3 года назад +6

      Si, en las nuevas versiones del paquete tienes que convertir a Uri.parse(“url”); creo que tengo que actualizar el vídeo.

    • @perlagodinez6830
      @perlagodinez6830 3 года назад +3

      a mi igual me manda error....
      sólo cambié a http.get(Uri.parse('url'));

    • @anonymushadow282
      @anonymushadow282 2 года назад

      Gracias, justo tenía ese prblema

  • @rusbelthnietorosado9485
    @rusbelthnietorosado9485 3 года назад +2

    Me sale el siguiente error cuando levanto el app. "Error: ADB exited with exit code 1 Performing Streamed Install". No se que sucede con mi Emulador.

    •  3 года назад

      Intenta crear otro emulador, con la API 29. Quiza así se solucione. Es la que yo estoy usando.

    • @rusbelthnietorosado9485
      @rusbelthnietorosado9485 3 года назад

      @ si con otro si me funciona en este caso mi móvil, pero ahora tengo un nuevo móvil y quise levantarlo ahi pero me sale ese error. T_T. mi anterior móvil lo vendí y ya no estará conmigo
      T_T

  • @DanielGonzalez-ju4eo
    @DanielGonzalez-ju4eo 3 года назад +2

    Buenas noches primero que nada gracias por este video, muy buena explicacion . Me presenta este error alguna solucion es mi version de flutter
    Installing build\app\outputs\flutter-apk\app.apk... 3,8s
    E/flutter (15208): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception:
    type '_InternalLinkedHashMap' is not a subtype of type 'Iterable'
    E/flutter (15208): #0 _MyAppState._getGifs (package:flutter_application_2/main.dart:30:32)
    E/flutter (15208):
    E/flutter (15208):

    •  3 года назад +1

      ¿En que momento surge el error?

    • @laradevs4342
      @laradevs4342 3 года назад

      lo resolviste? tengo el mismo problema

  • @luzgenesis7
    @luzgenesis7 3 года назад +3

    genial video graciasss!!!, sería muy interesante que hagas uno donde enseñes como crear apis :) !!

    •  3 года назад +8

      Por supuesto, ese es el siguiente paso obligatorio. Primero enseñaré a usar Firebase, que es como la base de datos ideal para Flutter ya que es creada por el mismo Google. Luego aprenderemos crear y a consumir EndPoints creadas por nosotros mismos en Node js o en PHP. Pengo muchos vídeos pendientes. Jaja

  • @viktorarellanes9786
    @viktorarellanes9786 3 года назад +2

    Buen video

  • @zamora322
    @zamora322 3 года назад +2

    Hola, gracias por compartir, ¿Qué plugin utilizas para el auto-completado? Gracias.

    •  3 года назад +2

      Busca Flutter Snippers Awesome

  • @byan993
    @byan993 Год назад +1

    hola, disculpa no acostumbro a solicitar ayudas pero me encuentro estancado en un dilema, talvez puedes hacer tutorial haciendo una petición pero cargando los datos en un BottomNavigationBar

    •  Год назад

      ¿Lo que necesitas es que desde el backend mandar las opciones que mostrará el BottomNavigatorBar?

  • @wjbtc4395
    @wjbtc4395 2 года назад

    Hola al crear la clase Gif no puedo hacerla como aparece en el video
    solo puedo de la siguiente manera
    class Gif {
    String? name;
    String? url;
    Gif({this.name, this.url}) {
    name = name;
    url = url;
    }
    }
    pero al hacerlo asi la sigunte linea de codigo me da error
    gifs.add(Gif(items['']));
    como podria solucionarlo?

  • @cesarfavelaaguilar3375
    @cesarfavelaaguilar3375 2 года назад

    tambien me da error al copiar esta libreria, import 'package:list_giphy/models/Gif.dart';

  • @la220999
    @la220999 3 года назад +2

    gran tutorial amigo! una pregunta, al momento de consumir una api me arroja un status code 403, sabes que podría estar causando ese problema?

    •  3 года назад +1

      Revisa si la API requiere de algún Token, normalmente se usa el 403 cuando el servidor recibe la petición pero decide no responder por alguna razón, generalmente son problemas de permisos o falta de parámetros.

    • @la220999
      @la220999 3 года назад +1

      @ es una API que realicé en php y mysql, montada en xampp, y al consumirla con Postman si me da un status code 200, el problema es al consumirla en flutter

  • @angelcasanchez7229
    @angelcasanchez7229 2 года назад +1

    me da error al enviar la url de la api

  • @ex0dias616
    @ex0dias616 Год назад

    cada actualización tanto del lenguaje como del FW le complican más hacer las cosas

  • @marcecam747
    @marcecam747 3 года назад +2

    muy bien explicado, esperando la segunda parte gracias

    •  3 года назад +1

      Ya está lista la segunda parte, usamos un FutureBuilder para representar la información que traemos de Internet.
      ruclips.net/video/kpjgTlyeZjU/видео.html

  • @cesarfavelaaguilar3375
    @cesarfavelaaguilar3375 2 года назад

    List gifs = []; Saben porque me da error en la palabra Gif

  • @marcoantoniocalle2868
    @marcoantoniocalle2868 2 года назад +1

    los mejores videos de flutter

  • @jefersonchinchilla4356
    @jefersonchinchilla4356 Год назад +1

    Si el Json no trae el "data" para recorrerlo en el for que debería de colocar?

    •  Год назад

      Si el JSON no trae cada puede hacer que se muestre un widget diferente. Una imagen o un texto. Se regresará un arreglo vacío. Con 0 en el .length.

  • @worchock
    @worchock Год назад +1

    una pregunta, no hay una mejor manera de castear los errores cuando existe por ejemplo un bad request? es decir, que en el retorno pueda ser un objeto cuando es éxitoso pero cuando es un error retorné un mensaje string

    •  Год назад +1

      Claro, en Dart también existe los valores nullables y también los try catch. Eso debería ser suficiente para manejar los errores.

    • @worchock
      @worchock Год назад +1

      @ pero y en tal caso que uno deba retornar el mensaje de error que retorne el back, sabes como se haría, es decir que el método puede retornar un modelo por sí es ok u el otro por sí es error

  • @nelsonjavieravila1082
    @nelsonjavieravila1082 3 года назад +1

    gracias muy buen tutorial

  • @THeIvanGamer2013
    @THeIvanGamer2013 2 года назад +6

    Para aquellos que no les funciona el _listadoGifs en la version actual(si les asigna un late al listado), deben declarar de la siguiente forma
    Future _getGifs()async{}..
    late final Future _listadoGifs = _getGifs();
    @override
    void initstate(){
    _listadoGifs;
    Super.initstate();
    }

    • @THeIvanGamer2013
      @THeIvanGamer2013 2 года назад

      Pd me doy cuenta que no se inicializa el _listadoGifs en initstate, es mejor declarar el _listadoGifs y asignarle el _getGifs en una linea

    • @ggaltar
      @ggaltar 2 года назад

      @@THeIvanGamer2013 hola hola. Muchas gracias por compartir esta solución. No entendí la Pd, podrías ampliar un poco en eso de asignarle el _getGifs en una línea. Tal vez copiando el código, es que no me está funcionando el _listadoGifs. Muchas gracias, saludos.

    • @THeIvanGamer2013
      @THeIvanGamer2013 2 года назад +1

      @@ggaltarapenas llegue a casa reviso

    • @ggaltar
      @ggaltar 2 года назад +1

      @@THeIvanGamer2013 ok muchas gracias!!

    • @carlosbe8008
      @carlosbe8008 Год назад +3

      @@THeIvanGamer2013 Si llegaste a casa amigo? :(

  • @cesarelideleonaguilar4214
    @cesarelideleonaguilar4214 2 года назад

    Future _listado; tengo error en el list de gif lo tengo de esta manera y me dice que no esta inicializado alguien me ayuda

  • @RodrigoPerez-xx9ou
    @RodrigoPerez-xx9ou 3 года назад +3

    Hola excelente el curso , tengo un solucionarlo
    Future _getGifs() async{ me marca error en _getGifs me dice lo siguiente
    The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type
    me podras dar una mano a ver si puedo seguir.... mil gracias

    • @RodrigoPerez-xx9ou
      @RodrigoPerez-xx9ou 3 года назад

      Ya lo pude solucionar . Gracias

    • @bernyabreu42
      @bernyabreu42 3 года назад

      hola bro, como lo solucionaste? recién estoy viendo el video y tengo el mismo problema

    • @rodrigoperezibiricu
      @rodrigoperezibiricu 3 года назад +11

      @@bernyabreu42 sacale todo lo de la izquiera a _getGifs()

    • @anonymushadow282
      @anonymushadow282 2 года назад

      Me pasa igual

    • @sebastiantorres4772
      @sebastiantorres4772 2 года назад

      @@rodrigoperezibiricu correcto si funciona asi

  • @alfonsoromero3092
    @alfonsoromero3092 3 года назад +1

    que opinión te merece wordpress como api? saludos

    •  3 года назад +2

      Funciona bien y las peticiones son pocas. Siempre va a depender del tipo de hosting que tengas, pero Wordpress a pesar de ser funcional no es eficiente a la hora de manejar los recursos. Si tu aplicación tiene más de mil peticiones al día quizá sea mejor optar por una api personalizada.

  • @yormanlopez8553
    @yormanlopez8553 2 года назад +1

    Por lo menos deja el código ese ni sirve . 😡🤬

    • @nathaliealvarezhernandez5649
      @nathaliealvarezhernandez5649 2 года назад

      yo tengo problemas con recorrer el json, me aparece type '_InternalLinkedHashMap' is not a subtype of type 'List'. lograset resolverlo?

  • @55xpanama
    @55xpanama 2 года назад

    en la linea de codigo: gifs.add(Gif(item["title"], item["image"]["downsized"]["url"])); me envia el siguiente error NoSuchMethodError (NoSuchMethodError: The method '[]' was called on null.
    Receiver: null
    Tried calling: []("downsized"))

  • @aboel22
    @aboel22 3 года назад

    cual seria la diferencia de usar los aquetes dio?

  • @victor45436
    @victor45436 2 года назад

    Buen video bro, gracias por compartir tus conocimientos de Flutter.. like y nuevo sub!

  • @masmusicaperu
    @masmusicaperu 3 года назад +2

    Biem video :D

    •  3 года назад

      Gracias. 😁

  • @youtubeuser5874
    @youtubeuser5874 3 года назад

    Muy buen video gracias Saludos!!

  • @porfirioramosfernandez9613
    @porfirioramosfernandez9613 2 года назад

    gracias buen video

  • @55xpanama
    @55xpanama 2 года назад

    alguien me pueda ayudar en el initState me envia este error @override
    void initState() {
    // TODO: implement initState
    super.initState();
    _listadoGifs = _getGifs();
    } // _TypeError (type 'Future' is not a subtype of type 'Future')