init 1.0.0
init: ^1.0.0 copied to clipboard
Init widget to execute initialization methods declaratively
// ignore_for_file: avoid_print
import 'package:flutter/material.dart';
import 'package:init/init.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
var _isLogoDisplayed = false;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Init Demo',
theme: ThemeData(
useMaterial3: true,
),
home: Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: const Text('Init Demo'),
),
body: Center(
child: Column(
children: [
ElevatedButton(
onPressed: () {
setState(() {
_isLogoDisplayed = !_isLogoDisplayed;
});
},
child: Text(
_isLogoDisplayed ? 'Hide the Logo' : 'Display the Logo',
),
),
if (_isLogoDisplayed) const _LogoWidget(),
],
),
),
),
);
}
}
class _LogoWidget extends StatelessWidget {
const _LogoWidget();
@override
Widget build(BuildContext context) {
return Init(
onInit: () => print('Widget initialized'),
onInitPostFrame: () => ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('The logo is now displayed!')),
),
onDispose: () => print('Widget disposed'),
child: const FlutterLogo(size: 200),
);
}
}