如何告诉 itemBuilder Flutter 中没有更多的项目?
How to tell itemBuilder there is no more items in Flutter?
中查看样本时
class RandomWordsState extends State<RandomWords> {
...
Widget _buildSuggestions() {
return new ListView.builder(
padding: const EdgeInsets.all(16.0),
itemBuilder: (context, i) {
if (i.isOdd) return new Divider();
final index = i ~/ 2;
if (index >= _suggestions.length) {
_suggestions.addAll(generateWordPairs().take(10));
}
return _buildRow(_suggestions[index]);
}
);
}
}
我想知道是否有办法告诉 itemBuilder
没有更多的项目。例如,我只想在列表视图中显示 30 个项目,我该怎么做?
此构造函数中有一个 属性,名为 itemCount
。
您可以将其设置为您喜欢的任何值以限制 ListView.builder
/ListView.separated
大小。
这是一个示例,将 ListView
限制为 30 个项目
Widget build(BuildContext context) {
return ListView.builder(
itemCount: 30,
itemBuilder: (context, index) {
return ListTile(title: Text('index: $index'));
},
);
}
当没有更多项目要构建时,您只需要在 itemBuilder 函数中添加 return null
。
要动态停止生成器,您只需 return null。但是,您必须使用 ListView.custom
传递一个委托,并在其中传递您的可为 null 的构建器 (NullableIndexedWidgetBuilder
)。 ListView.builder
需要一个非空构建器 (IndexedWidgetBuilder
)。
希望对您有所帮助:
Widget buildList() {
return ListView.custom(
childrenDelegate: SliverChildBuilderDelegate(itemBuilderFunction),
);
}
Widget? itemBuilderFunction(BuildContext context, int i) {
if (i.isOdd) {
return const Divider();
}
final index = i ~/ 2;
if (index >= _suggestions.length) {
if (_suggestions.length < 100) { // limiting the list size to demonstrate
_suggestions.addAll(generateWordPairs().take(10));
}
}
if (index >= _suggestions.length) {
return null;
}
return _buildRow(_suggestions[index]);
}
class RandomWordsState extends State<RandomWords> {
...
Widget _buildSuggestions() {
return new ListView.builder(
padding: const EdgeInsets.all(16.0),
itemBuilder: (context, i) {
if (i.isOdd) return new Divider();
final index = i ~/ 2;
if (index >= _suggestions.length) {
_suggestions.addAll(generateWordPairs().take(10));
}
return _buildRow(_suggestions[index]);
}
);
}
}
我想知道是否有办法告诉 itemBuilder
没有更多的项目。例如,我只想在列表视图中显示 30 个项目,我该怎么做?
此构造函数中有一个 属性,名为 itemCount
。
您可以将其设置为您喜欢的任何值以限制 ListView.builder
/ListView.separated
大小。
这是一个示例,将 ListView
限制为 30 个项目
Widget build(BuildContext context) {
return ListView.builder(
itemCount: 30,
itemBuilder: (context, index) {
return ListTile(title: Text('index: $index'));
},
);
}
当没有更多项目要构建时,您只需要在 itemBuilder 函数中添加 return null
。
要动态停止生成器,您只需 return null。但是,您必须使用 ListView.custom
传递一个委托,并在其中传递您的可为 null 的构建器 (NullableIndexedWidgetBuilder
)。 ListView.builder
需要一个非空构建器 (IndexedWidgetBuilder
)。
希望对您有所帮助:
Widget buildList() {
return ListView.custom(
childrenDelegate: SliverChildBuilderDelegate(itemBuilderFunction),
);
}
Widget? itemBuilderFunction(BuildContext context, int i) {
if (i.isOdd) {
return const Divider();
}
final index = i ~/ 2;
if (index >= _suggestions.length) {
if (_suggestions.length < 100) { // limiting the list size to demonstrate
_suggestions.addAll(generateWordPairs().take(10));
}
}
if (index >= _suggestions.length) {
return null;
}
return _buildRow(_suggestions[index]);
}