Skip to content

Instantly share code, notes, and snippets.

@sorgfal
Created September 2, 2022 10:41
Show Gist options
  • Select an option

  • Save sorgfal/6735d035368f754e26ebb303c8b19d73 to your computer and use it in GitHub Desktop.

Select an option

Save sorgfal/6735d035368f754e26ebb303c8b19d73 to your computer and use it in GitHub Desktop.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: IterableListViewWidget<String>(
iterator: getStrings().iterator,
tileBuilder: (ctx, value) => ListTile(title: Text(value)),
)));
}
}
Iterable<String> getStrings() sync* {
for (var i = 0; i < 100; i++) {
yield 'Hello $i';
}
}
typedef ItearableTileBuilder<T> = Widget Function(
BuildContext context, T value);
class IterableListViewWidget<T> extends StatelessWidget {
final Iterator<T> iterator;
final ItearableTileBuilder<T> tileBuilder;
const IterableListViewWidget(
{Key? key, required this.iterator, required this.tileBuilder})
: super(key: key);
@override
Widget build(BuildContext context) {
return ListView(children: [
for (; iterator.moveNext();)
iterator.current == null
? const SizedBox(
height: 0,
width: 0,
)
: tileBuilder(context, iterator.current)
]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment