如何将参数发送到另一个屏幕?扑

时间:2020-02-02 04:49:29

标签: json firebase flutter flutter-layout

我正在尝试将“参与者”的参数发送到另一个屏幕,我可以使用ListView来完成它并加载事件列表,但是如果参与者列表不能与参与者以相同的方式工作可以,但是当我点击并想查看“参与者”的信息时,所有内容都会显示为空:

在这一部分中,我将创建参与者并生成能够对其进行可视化的列表,并通过点击以发送有关此信息的信息(根据我的情况)

        Widget _crearListadoParticipantes() {
      return FutureBuilder<List<Participantes>>(
        future: eventosProvider.cargarParticipantes(evento, participantes),
        builder: (context, snapshot) {
          if ( snapshot.hasData ) {
            final participantes = snapshot.data;
            return ListView.builder(
              itemCount: participantes.length,
              itemBuilder: (context, i) {
                return _crearParticipante(context, participantes[i], evento);
              }
            );
          } else if (snapshot.hasError){
            return Center(child: Text("${snapshot.error}"));
          } else {  
            return Center( child: CircularProgressIndicator());
          }
        },
      );
    }

    Widget _crearParticipante(BuildContext context, Participantes participantes, EventoModel evento) {
      return Padding(
        padding: EdgeInsets.all(12.0),
        child: GestureDetector(
          child: RichText(
            softWrap: false,
            text: TextSpan(
              style: TextStyle(
                color: Colors.black,
                fontFamily: "Lato_LightItalic",
                fontStyle: FontStyle.italic,
                fontSize: 20.0,
                fontWeight: FontWeight.w400
              ),
              children: [
                TextSpan(text: '     '+'${participantes.numero}',
                  style: TextStyle(
                    fontWeight: FontWeight.w600
                  )
                ),
                TextSpan(text: "           "),
                TextSpan(text: '${participantes.apellido} ${participantes.nombre}',)
              ],
            ),
          ),
          onTap: () => Navigator.pushNamed(context, 'destalleParticipante', arguments: evento),
        ),
      );
    }

这是我应该在其中收到我点击的参与者的论点的地方,但是正如我所说的,null返回

    class DetalleParticipante extends StatefulWidget {

      @override
      _DetalleParticipanteState createState() => _DetalleParticipanteState();
    }

    class _DetalleParticipanteState extends State<DetalleParticipante> {

      final eventosProvider = new EventosProvider();

      EventoModel evento = new EventoModel();
      Participantes participantes = new Participantes();

      @override
      Widget build(BuildContext context) {

        final EventoModel eventoData = ModalRoute.of(context).settings.arguments;
        if ( eventoData != null ) {
          evento = eventoData;
        }
          print(participantes.nombre);
        return Scaffold(
          appBar: PreferredSize(
            preferredSize: Size.fromHeight(0),
            child: AppBar(
              backgroundColor: Color(0xFF249FE2),
            ),
          ),
          backgroundColor: Colors.white,
          body:  Container(
            color: Colors.white,
            child: Column(
              children: <Widget>[
                _encabezadoParticipante(context, AssetImage("assets/icon/info_corredor.png"), participantes, evento),
              ],
            ),
          ),
        );
      }

      Widget _backBottom() {
return FloatingActionButton(
  elevation: 0.0,
  backgroundColor: Colors.white,
  child: Icon(
    Icons.arrow_back,
    size: 45.0,
    color: Colors.black,
  ),
  onPressed: (){
    Navigator.pop(context);
  },
);

}

      Widget _encabezadoParticipante(BuildContext context, AssetImage image, Participantes participantes, EventoModel evento) {
        return Container(
          color: Colors.grey[600],
          child: Padding(
            padding: const EdgeInsets.all(10.0),
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceAround,
              children: <Widget>[
                _backBottom(),
                Flexible(
                  child: Padding(
                    padding: EdgeInsets.all(8.0),
                    child: Text('${participantes.apellido}',
                    textAlign: TextAlign.center,
                      maxLines: 3,
                      softWrap: true,
                      style: TextStyle(                
                        color: Colors.white,
                        fontFamily: "Lato",
                        fontStyle: FontStyle.italic,
                        fontSize: 30.0,
                        fontWeight: FontWeight.bold
                      ),
                    ),
                  ),
                ),
                Image(image: image,
                fit: BoxFit.cover,
                ),
              ],
            ),
          ),
        );
      }

    }

0 个答案:

没有答案