【发布时间】: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