Created
September 2, 2022 10:41
-
-
Save sorgfal/6735d035368f754e26ebb303c8b19d73 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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