【问题标题】:Can't show Widget on ListView.Builder when Widget is obtained by function on Flutter在 Flutter 上通过函数获取 Widget 时无法在 ListView.Builder 上显示 Widget
【发布时间】:2019-07-19 05:55:24
【问题描述】:

我正在尝试用switch 填充ListView,所以我想为每个所需的小部件使用一个函数,避免在case: 选项上编写大量代码。我的问题是,当我使用函数返回小部件时,屏幕上没有显示任何内容,但是如果我在 case 选项上编写小部件的所有代码,则会显示屏幕的内容。为了显示我的问题,我只使用第一个选项。

代码(不显示):

  Widget getBody(BuildContext context) {
    return Container(
      padding: EdgeInsets.all(16.0),
      child: new ListView.builder(
          itemCount: 9,
          itemBuilder: (BuildContext context, int index) {
            switch (index) {
              case 0: // Descricao
                showDescription();
                break;
              case 1: // Produto
                _showProduto();
                break;
              case 2: // Preco Unitario
                _showPrecoUnitario();
                break;
              case 3: // Quantidade
                _showQtd();
                break;
              case 4: // Total
                _showTotal();
                break;
              case 5: // Pago por
                _showPagoPor();
                break;
              case 6: // Conta de referencia
                _showContaDeReferencia();
                break;
              case 7: // Data
                _showData();
                break;
              case 8: // Notas
                _showNotas();
                break;
              default:
                print('DEFAUL ITEM BUILDER');
            }
          }),
    );
  }

 Widget showDescription() {
    return new TextField(
        cursorColor: Color(0xFF801E48),
        controller: _txtDescricao,
        decoration: InputDecoration(
            fillColor: Color(0xFF801E48),
            labelStyle: TextStyle(fontSize: 16.0, color: Color(0xFF801E48)),
            hintText: 'Ex.: Almoço com cliente',
            focusedBorder: UnderlineInputBorder(
                borderSide: BorderSide(
              color: Color(0xFF801E48),
            )),
            labelText: 'Descrição'));
  }

代码工作:

  Widget getBody(BuildContext context) {
    return Container(
      padding: EdgeInsets.all(16.0),
      child: new ListView.builder(
          itemCount: 9,
          itemBuilder: (BuildContext context, int index) {
            switch (index) {
              case 0: // Descricao
                return new TextField(
                    cursorColor: Color(0xFF801E48),
                    controller: _txtDescricao,
                    decoration: InputDecoration(
                        fillColor: Color(0xFF801E48),
                        labelStyle:
                            TextStyle(fontSize: 16.0, color: Color(0xFF801E48)),
                        hintText: 'Ex.: Almoço com cliente',
                        focusedBorder: UnderlineInputBorder(
                            borderSide: BorderSide(
                          color: Color(0xFF801E48),
                        )),
                        labelText: 'Descrição'));
                break;
              case 1: // Produto
                _showProduto();
                break;
              case 2: // Preco Unitario
                _showPrecoUnitario();
                break;
              case 3: // Quantidade
                _showQtd();
                break;
              case 4: // Total
                _showTotal();
                break;
              case 5: // Pago por
                _showPagoPor();
                break;
              case 6: // Conta de referencia
                _showContaDeReferencia();
                break;
              case 7: // Data
                _showData();
                break;
              case 8: // Notas
                _showNotas();
                break;
              default:
                print('DEFAUL ITEM BUILDER');
            }
          }),
    );
  }

我看不出没有任何理由不工作,但屏幕上什么都没有显示,我很困惑。

【问题讨论】:

    标签: listview dart flutter widget


    【解决方案1】:

    你忘记了返回 keyword ,像这样:

                case 0: // Descricao
                   return showDescription();
    

    【讨论】:

      猜你喜欢
      • 2020-05-05
      • 1970-01-01
      • 2020-02-11
      • 2019-05-22
      • 2020-05-25
      • 1970-01-01
      • 2020-07-08
      • 2020-07-03
      • 2020-09-03
      相关资源
      最近更新 更多