df_will_dispose 0.2.0 df_will_dispose: ^0.2.0 copied to clipboard
A package to mark resources for disposal upon definition, simplifying your code.
DF Will Dispose #
Dart & Flutter Packages by DevCetra.com & contributors.
Summary #
A package to mark resources for disposal upon definition, simplifying your code. For a full feature set, please refer to the API reference.
Quickstart #
- Use
WillDisposeState
instead ofState
for your widgets, or simply mix inDisposeMixin
andWillDisposeMixin
to your existing state classes. - Define your resources using the
willDispose
function, which will automatically dispose of the resource when the widget is disposed. - Only
ChangeNotifier
andDisposeMixin
resources are supported at the moment. - Common
ChangeNotifier
resources includeValueNotifier
,FocusNode
, most all Flutter controllers and Pods. - You can also create your own classes that implement
DisposeMixin
, enabling them to work seamlessly withWillDisposeMixin
.
Example: #
// Option 1: WillDisposeState<MyWidget>.
// Option 2: State<MyWidget> with DisposeMixin, WillDisposeMixin.
class _MyWidgetState extends WillDisposeState<MyWidget> {
// Define and mark resources for disposal on the same line.
late final _textController = willDispose(TextEditingController());
late final _valueNotifier = willDispose(ValueNotifier('Initial Value'));
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('WillDispose Example')),
body: Column(
children: [
TextField(controller: _textController),
ValueListenableBuilder<String>(
valueListenable: _valueNotifier,
builder: (context, value, child) => Text('Value: $value'),
),
ElevatedButton(
onPressed: () {
_valueNotifier.value = 'Updated Value';
},
child: const Text('Update Value'),
),
],
),
);
}
@override
void dispose() {
// Resources marked with `willDispose` will be disposed automatically here.
super.dispose();
}
}
Installation #
Use this package as a dependency by adding it to your pubspec.yaml
file (see here).
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. Your support helps cover the costs of development and keeps the project growing.
- Share your ideas: Every perspective matters, and your ideas can spark innovation.
- 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!
Chief Maintainer: #
📧 Email Robert Mollentze at robmllze@gmail.com
Dontations: #
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/robmllze
License #
This project is released under the MIT License. See LICENSE for more information.