A simple Flutter widget to declaratively execute initialization logic in your widget tree. Used internally at Theodo Apps ❤️💙💛.
Flutter widgets often require initialization logic (e.g., fetching data, setting
up listeners) that is typically placed in initState, didChangeDependencies,
or after the first frame. Managing this logic can lead to boilerplate and less
reusable code, especially when you want to compose or reuse initialization
patterns across widgets.
init provides an Init widget that lets you declaratively specify
initialization and disposal logic as parameters, making your code cleaner, more
modular, and easier to test.
To use the Init widget, add init package to the dependencies:
dart pub add init
# or
flutter pub add initYou can also add the package manually to your pubspec.yaml:
dependencies:
init: ^1.0.0Then run:
flutter pub getWrap any widget with Init and provide the desired callbacks:
import 'package:init/init.dart';
Init(
onInit: () => print('Widget initialized'),
onInitPostFrame: () => print('Widget initialized after frame'),
onDidChangeDependencies: () => print('Dependencies changed'),
onDispose: () => print('Widget disposed'),
child: MyChildWidget(),
)onInit: Called once ininitState(for one-time setup)onInitPostFrame: Called once after the first frame is renderedonDidChangeDependencies: Called indidChangeDependenciesonDispose: Called indisposechild: The widget to render
Init(
onInit: () => print('Initializing...'),
onDispose: () => print('Cleaning up...'),
child: const Text('Hello!'),
)We are a 130 people company developing and designing universal applications with React Native and Flutter using the Lean & Agile methodology. To get more information on the solutions that would suit your needs, feel free to get in touch by email or through or contact form!
We will always answer you with pleasure 😁