fade_indexed_stack 0.2.2
fade_indexed_stack: ^0.2.2 copied to clipboard
An IndexedStack with FadeTransition and lazy loading.
import 'package:fade_indexed_stack/fade_indexed_stack.dart';
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'FadeIndexedStack example',
theme: ThemeData(
colorSchemeSeed: Colors.blue,
useMaterial3: true,
),
darkTheme: ThemeData(
colorSchemeSeed: Colors.blue,
useMaterial3: true,
brightness: Brightness.dark,
),
themeMode: ThemeMode.system,
home: const NavigationView(),
);
}
}
class NavigationView extends StatefulWidget {
const NavigationView({super.key});
@override
State<NavigationView> createState() => _NavigationViewState();
}
class _NavigationViewState extends State<NavigationView> {
int _currentIndex = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
body: FadeIndexedStack(
index: _currentIndex,
lazy: true,
duration: const Duration(milliseconds: 300),
children: const [
HomePage(),
ProfilePage(),
SettingsPage(),
],
),
bottomNavigationBar: NavigationBar(
destinations: const [
NavigationDestination(
icon: Icon(Icons.home),
label: "Home",
),
NavigationDestination(
icon: Icon(Icons.person),
label: "Profile",
),
NavigationDestination(
icon: Icon(Icons.settings),
selectedIcon: Icon(Icons.settings),
label: "Settings",
),
],
selectedIndex: _currentIndex,
onDestinationSelected: (index) {
setState(() {
_currentIndex = index;
});
},
),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Home")),
body: const Center(child: Text("Home Page")),
);
}
}
class ProfilePage extends StatelessWidget {
const ProfilePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Profile")),
body: const Center(child: Text("Profile Page")),
);
}
}
class SettingsPage extends StatelessWidget {
const SettingsPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Settings")),
body: const Center(child: Text("Settings Page")),
);
}
}