https://github.com/karbunkul/flutter_any_to_widget
https://github.com/karbunkul/flutter_any_to_widget
Last synced: 8 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/karbunkul/flutter_any_to_widget
- Owner: karbunkul
- License: mit
- Created: 2022-03-30T19:35:46.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-04-07T08:28:55.000Z (about 4 years ago)
- Last Synced: 2025-10-22T22:58:40.468Z (8 months ago)
- Language: Dart
- Size: 167 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Convert any data to widget
## Getting started
Add package to your project ```flutter pub add any_to_widget```
Implements DataConverter for your types. For example
```dart
import 'package:any_to_widget/any_to_widget.dart';
import 'package:flutter/material.dart';
class A2WExceptionConverter implements DataConverter {
const A2WExceptionConverter();
@override
Widget convert(BuildContext context, data) {
final message =
(data as Exception).toString().replaceAll('Exception: ', '');
final style = Theme.of(context).textTheme.bodyText1;
return ListTile(
contentPadding: EdgeInsets.zero,
leading: const Icon(Icons.info, color: Colors.red),
title: Text('Error', style: style),
subtitle: Text(message),
);
}
@override
bool hasMatch(data) => data is Exception;
}
```
Setup AnyToWidgetScope
```dart
import 'package:any_to_widget/any_to_widget.dart';
import 'package:flutter/material.dart';
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: const HomePage(),
builder: (_, child) {
return AnyToWidgetScope(
converters: const [
A2WExceptionConverter(),
],
child: child!,
);
},
);
}
}
```
Convert any data to widget
```dart
import 'package:any_to_widget/any_to_widget.dart';
import 'package:flutter/material.dart';
class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('AnyToWidget Demo')),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AnyToWidget(Exception('Fatal Error')),
const SizedBox(height: 4),
const AnyToWidget(12.0),
const SizedBox(height: 4),
AnyToWidget(DateTime.now()),
],
),
),
);
}
}
```