Flutter动画导航插件animated_nav_sheet的使用
Flutter动画导航插件animated_nav_sheet的使用
安装包
animated_nav_sheet: 1.1.0
动画
final _navController = NavController();
// 动画向前
_navController.forward();
// 动画向后
_navController.reverse();
预览
使用
示例
class AnimatedNavbarScreen extends StatefulWidget {
const AnimatedNavbarScreen({super.key});
[@override](/user/override)
State<AnimatedNavbarScreen> createState() => _AnimatedNavbarScreenState();
}
class _AnimatedNavbarScreenState extends State<AnimatedNavbarScreen> {
final _navController = NavController();
[@override](/user/override)
void dispose() {
_navController.dispose();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return Scaffold(
body: AnimationNavSheet(
color: Colors.primaries[3 % Colors.primaries.length],
maxHeight: size.height * .5,
navWidget: GestureDetector(
onTap: () {
_navController.forward(); // 触发动画向前
},
child: buildContainerMin(), // 最小化状态的控件
),
expendedWidget: GestureDetector(
onTap: () {},
child: buildContainerMax(), // 最大化状态的控件
),
navController: _navController,
child: Center(
child: Text(
"Example Animation Nav Sheet",
style: Theme.of(context).textTheme.displaySmall,
textAlign: TextAlign.center,
),
),
),
);
}
Widget buildContainerMax() {
return SingleChildScrollView(
child: Column(
children: [
ElevatedButton(
onPressed: () {
_navController.reverse(); // 触发动画向后
},
child: const Text('打开面板')),
ElevatedButton(onPressed: () {}, child: const Text('打开面板')),
ElevatedButton(onPressed: () {}, child: const Text('打开面板')),
],
),
);
}
Row buildContainerMin() {
return const Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Icon(
Icons.home_max,
color: Colors.white,
),
Icon(
Icons.people_alt_outlined,
color: Colors.white,
),
Icon(
Icons.settings,
color: Colors.white,
)
],
);
}
}
更多关于Flutter动画导航插件animated_nav_sheet的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter动画导航插件animated_nav_sheet的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用animated_nav_sheet
插件的示例代码。animated_nav_sheet
是一个用于实现动画导航的插件,它允许你以动画的形式展示和隐藏底部导航栏或类似的UI组件。
首先,确保你的Flutter项目中已经添加了animated_nav_sheet
依赖。你可以在你的pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
animated_nav_sheet: ^latest_version # 替换为最新版本号
然后运行flutter pub get
来安装依赖。
以下是一个完整的示例,展示了如何使用animated_nav_sheet
插件:
import 'package:flutter/material.dart';
import 'package:animated_nav_sheet/animated_nav_sheet.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Animated Nav Sheet Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
late final AnimatedNavSheetController _controller;
@override
void initState() {
super.initState();
_controller = AnimatedNavSheetController();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Animated Nav Sheet Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () => _showSheet(context),
child: Text('Show Sheet'),
),
),
bottomSheet: AnimatedNavSheet(
controller: _controller,
sheet: Container(
color: Colors.white,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text('This is the bottom sheet content.'),
ElevatedButton(
onPressed: () => _controller.close(),
child: Text('Close Sheet'),
),
],
),
),
),
),
);
}
void _showSheet(BuildContext context) {
_controller.show();
}
}
在这个示例中,我们创建了一个简单的Flutter应用,包含一个按钮和一个AnimatedNavSheet
。点击按钮时,AnimatedNavSheet
会以动画的形式展开,显示其内容。点击底部导航栏中的关闭按钮时,AnimatedNavSheet
会以动画的形式收起。
关键点解释:
- AnimatedNavSheetController:用于控制
AnimatedNavSheet
的展开和收起。 - AnimatedNavSheet:实现动画效果的底部导航栏或类似的UI组件。
- show 和 close 方法:分别用于展开和收起
AnimatedNavSheet
。
你可以根据需要对AnimatedNavSheet
进行自定义,例如添加更多内容、调整动画效果等。希望这个示例能帮你更好地理解如何在Flutter项目中使用animated_nav_sheet
插件。