listview - Flutter上的函数获取Widget时无法在ListView.Builder上显示Widget
问题描述
我正在尝试填充 a ListView
,所以我想为每个所需的小部件使用一个函数,避免在选项switch
上编写大量代码。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');
}
}),
);
}
我看不出没有任何理由不工作,但屏幕上什么也没有显示,我很困惑。
解决方案
你忘记了回报keyword
,像这样:
case 0: // Descricao
return showDescription();
推荐阅读
- java - 由于 BoxLayout 中的滚动窗格,JComponent 部分隐藏
- sql - 如何在postgresql中从日期中截断时间戳?
- javascript - 谷歌图表组合图将 100 视为 0.1
- javascript - OverlappingMarkerSpiderfier 和 Leaflet 工作的问题
- node.js - 错误:没有指定默认引擎,也没有提供扩展。在新的查看 MEAN 堆栈
- java - Java List:当我调用Arrays.fill()填充一个数组时,为什么会出现一些意想不到的元素?
- python - 在 Intellij 2018.2 中选择 python SDK 的解决方法
- php - 联系表格 - 转到页面
- mysql - 如何使用mysql内部连接计算其他表中的行数?
- python - 文件夹逻辑中的重复图像