如何动态打印未来地图的元素,动态

问题描述 投票:0回答:1

我正在寻找打印 Future Map 的元素,我通过 API 结果获取这些元素,并且我可以使用 then 读取结果,但我无法使用此结果将其显示在屏幕上并在外部使用其元素then,当我使用 then 中获得的元素来使用每个返回的元素制作每个屏幕的结构时。

`class _PaginaDetalleScreenState extends State<PaginaDetalleScreen> {
  @override
  Widget build(BuildContext context) {
    Future<Map<dynamic, dynamic>> progs =
        login().detalles(widget.clave, widget.sucursal, widget.folio);
    // progs.then((value) => print(value['ocs'][0][2]));

    print(progs[0]); // how to print each element

    return Scaffold(
      appBar: AppBar(
        backgroundColor: const Color(0xff3c4854),
        title: const Text('Detalles Pedido'),
      ),
      body: ListView.builder(
          itemCount: null,
          itemBuilder: (BuildContext context, int index) {
            return;
          }),
    );
  }
}`

我尝试将地图传递到列表以访问每个数据并能够在屏幕上单独显示它,我还尝试将元素用循环保存在另一个变量中以更改其结构,但是我仍然得到相同的结果,动态的未来地图动态。

android flutter list dart future
1个回答
0
投票

如果您对 API 的消费者提出要求,则希望得到答复,但不会立即发生任何情况,因此不会提出抗议,具体取决于各种因素。使用紧急程序,您可以使用紧急救援功能来构建紧急救援,并与紧急救援联系起来,以实现国家的紧急救援。 De esta forma solucione el Problema...

import 'package:dio/dio.dart'; // Paquete necesario para la petición a internet.
import 'package:flutter/material.dart';

class Opcion1 extends StatefulWidget {

  const Opcion1({super.key});

  @override
  State<Opcion1> createState() => _Opcion1State();
}

class _Opcion1State extends State<Opcion1> {

    dynamic productos; // Variable dinamica para almacenar la respuesta de la API

// Initstate, para cargar primero lo que esta en la función.
   @override
   void initState() {
     super.initState();
     getProductos(); //Funcion futura
   }

// Creación de la función asincrona
   Future<void> getProductos() async {
    
    final response = await Dio().get('urldelAPI');
    productos = response.data; //asignación de los valores

 //Manejo del estado, cuando se obtiene la respuesta manda el cambio de estado
    setState(() {});

   }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Material App',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Pruebas'),
        ),
        body: Container(
          child: Center(
            // Mostramos la respuesta de acuerdo a la estructura de la misma. 
            child: Text( productos?['ocs'][0][2].toString() ?? 'No data'), 
          ),
        ),
      ),
    );
  }
}

请注意以下格式:在 ListView 中对所需数据进行调整和调整。

© www.soinside.com 2019 - 2024. All rights reserved.