https://github.com/dev-cetera/df_type
Simplifies type conversions, inspections, nested data access, sync/async operations and more.
https://github.com/dev-cetera/df_type
dart library package types utilities
Last synced: 2 months ago
JSON representation
Simplifies type conversions, inspections, nested data access, sync/async operations and more.
- Host: GitHub
- URL: https://github.com/dev-cetera/df_type
- Owner: dev-cetera
- License: mit
- Created: 2024-08-01T11:03:42.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-26T20:12:04.000Z (9 months ago)
- Last Synced: 2025-06-26T21:45:49.297Z (9 months ago)
- Topics: dart, library, package, types, utilities
- Language: Dart
- Homepage: https://pub.dev/packages/df_type
- Size: 215 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
Dart & Flutter Packages by dev-cetera.com & contributors.
[](https://github.com/sponsors/dev-cetera)
[](https://www.patreon.com/c/RobertMollentze)
[](https://pub.dev/packages/df_type)
[](https://github.com/dev-cetera/df_type/tree/v0.14.2)
[](https://raw.githubusercontent.com/dev-cetera/df_type/main/LICENSE)
---
[](https://github.com/dev-cetera)
## Summary
A versatile package that simplifies type conversions, inspections, nested data access, sync/async operations and more.
## Quickstart
```dart
enum Alphabet { A, B, C }
enum Status { pending, active, done }
void main() async {
// --- Type Checking ---
print('\n*** Type Checking Utilities ***');
print('isNullable: ${isNullable()}'); // true
print('isSubtype: ${isSubtype()}'); // true
print('typeEquality: ${typeEquality()}'); // true
print('typeEquality: ${typeEquality()}'); // false
// --- Type Conversion ---
print('\n*** Type Conversion Utilities ***');
print("letIntOrNull('55'): ${letIntOrNull('55')}"); // 55
print(
"letMapOrNull from JSON: ${letMapOrNull('{"a": 1}')}",
); // {a: 1}
print(
"letListOrNull from CSV: ${letListOrNull('1, 2, 3')}",
); // [1, 2, 3]
// --- Enum Helpers ---
print('\n*** Enum Helpers ***');
print(
"Alphabet.values.valueOf('B'): ${Alphabet.values.valueOf('B')}",
); // Alphabet.B
// --- Function and FutureOr Extensions ---
print('\n*** Function and FutureOr Extensions ***');
int Function(int) addOne = (i) => i + 1;
print('Function.tryCall: ${addOne.tryCall([5])}'); // 6
FutureOr futureOrValue = Future.value(10);
print('futureOrValue.isFuture: ${futureOrValue.isFuture}'); // true
print('futureOrValue.toFuture(): ${await futureOrValue.toFuture()}'); // 10
// --- Asynchronous Helpers ---
print('\n*** Asynchronous Helpers ***');
// `consec` for handling a mix of sync/async values
final result = await consec(Future.value(5), (val) => val * 2);
print('consec result: $result'); // 10
// `Waiter` for deferred, batched execution
final taskQueue = Waiter();
taskQueue.add(() => 'Task 1');
taskQueue.add(() async => 'Task 2');
final waiterResults = await taskQueue.wait();
print('Waiter results: $waiterResults'); // (Task 1, Task 2)
}
```
---
☝️ Please refer to the [API reference](https://pub.dev/documentation/df_type/) for more information.
---
## 💬 Contributing and Discussions
This is an open-source project, and we warmly welcome contributions from everyone, regardless of experience level. Whether you're a seasoned developer or just starting out, contributing to this project is a fantastic way to learn, share your knowledge, and make a meaningful impact on the community.
### ☝️ Ways you can contribute
- **Buy me a coffee:** If you'd like to support the project financially, consider [buying me a coffee](https://www.buymeacoffee.com/dev_cetera). Your support helps cover the costs of development and keeps the project growing.
- **Find us on Discord:** Feel free to ask questions and engage with the community here: https://discord.gg/gEQ8y2nfyX.
- **Share your ideas:** Every perspective matters, and your ideas can spark innovation.
- **Help others:** Engage with other users by offering advice, solutions, or troubleshooting assistance.
- **Report bugs:** Help us identify and fix issues to make the project more robust.
- **Suggest improvements or new features:** Your ideas can help shape the future of the project.
- **Help clarify documentation:** Good documentation is key to accessibility. You can make it easier for others to get started by improving or expanding our documentation.
- **Write articles:** Share your knowledge by writing tutorials, guides, or blog posts about your experiences with the project. It's a great way to contribute and help others learn.
No matter how you choose to contribute, your involvement is greatly appreciated and valued!
### ☕ We drink a lot of coffee...
If you're enjoying this package and find it valuable, consider showing your appreciation with a small donation. Every bit helps in supporting future development. You can donate here: https://www.buymeacoffee.com/dev_cetera
## 🧑⚖️ License
This project is released under the [MIT License](https://raw.githubusercontent.com/dev-cetera/df_type/main/LICENSE). See [LICENSE](https://raw.githubusercontent.com/dev-cetera/df_type/main/LICENSE) for more information.