|
| 1 | +import 'package:ansi_modifier/ansi_modifier.dart'; |
| 2 | +import 'package:build_test/build_test.dart' show resolveSource; |
| 3 | +import 'package:generic_reader/generic_reader.dart'; |
| 4 | + |
| 5 | +/// To run this program navigate to the root folder |
| 6 | +/// in your local copy the package `generic_reader` and |
| 7 | +/// use the command: |
| 8 | +/// |
| 9 | +/// # dart example/bin/enum_example.dart |
| 10 | +
|
| 11 | +/// Demonstrates how to use [Reader] to read a nested list. |
| 12 | +Future<void> main() async { |
| 13 | + print('\nReading library: example\n'); |
| 14 | + |
| 15 | + final lib = await resolveSource( |
| 16 | + r''' |
| 17 | + library example; |
| 18 | +
|
| 19 | + class A { |
| 20 | + const A(); |
| 21 | + final nestedList = List<List<String>> [['a'], ['b']]; |
| 22 | + } |
| 23 | + ''', |
| 24 | + (resolver) => resolver.findLibraryByName('example'), |
| 25 | + readAllSourcesFromFilesystem: false, |
| 26 | + ); |
| 27 | + |
| 28 | + if (lib == null) return; |
| 29 | + |
| 30 | + final listOfString = 'List<String>'.style(Ansi.green); |
| 31 | + final listOfListOfString = 'List<List<String>>'.style(Ansi.green); |
| 32 | + |
| 33 | + print('\nAdding decoder for $listOfString and $listOfListOfString\n'); |
| 34 | + Reader.addDecoder(const ListDecoder<String>()); |
| 35 | + Reader.addDecoder(const ListDecoder<List<String>>()); |
| 36 | + |
| 37 | + print(Reader.info); |
| 38 | + |
| 39 | + final listObj = lib.classes[0].fields[0].computeConstantValue(); |
| 40 | + final list1 = listObj?.read<List<List<String>>>(); |
| 41 | + final list2 = listObj?.read(); |
| 42 | + final list3 = listObj?.readList<List<String>>(); |
| 43 | + |
| 44 | + print('\nlistObj.read<$listOfListOfString>: $list1'); |
| 45 | + |
| 46 | + print('\nlistObj.read(): $list2'); |
| 47 | + |
| 48 | + print('\nlistObj.readList<$listOfString>(): $list3\n'); |
| 49 | +} |
0 commit comments