📅  最后修改于: 2023-12-03 14:58:51.109000             🧑  作者: Mango
在 Dart 编程语言中,高度 AppBar 颤动是一种常见的 UI 动画效果,用于为应用程序添加视觉上的交互性和吸引力。当用户与应用程序进行交互时,AppBar 在垂直方向上会发生细微的颤动,以增强应用程序的交互体验。
本文将介绍如何在 Dart 中实现高度 AppBar 颤动效果,并提供相关代码示例以供参考。
以下是实现高度 AppBar 颤动效果的步骤:
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
appBarHeight
和 scrollController
:class ShakingAppBar extends StatefulWidget {
@override
_ShakingAppBarState createState() => _ShakingAppBarState();
}
class _ShakingAppBarState extends State<ShakingAppBar> {
double appBarHeight = 56.0;
ScrollController scrollController;
...
}
@override
void initState() {
super.initState();
scrollController = ScrollController();
scrollController.addListener(() {
setState(() {
// 根据滚动的距离修改 appBarHeight 的值
appBarHeight = 56.0 - scrollController.offset;
});
});
}
@override
void dispose() {
scrollController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(appBarHeight),
child: AppBar(
title: Text('Shaking AppBar'),
...
),
),
body: ListView.builder(
controller: scrollController,
...
),
);
}
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
class ShakingAppBar extends StatefulWidget {
@override
_ShakingAppBarState createState() => _ShakingAppBarState();
}
class _ShakingAppBarState extends State<ShakingAppBar> {
double appBarHeight = 56.0;
ScrollController scrollController;
@override
void initState() {
super.initState();
scrollController = ScrollController();
scrollController.addListener(() {
setState(() {
appBarHeight = 100.0 - scrollController.offset;
});
});
}
@override
void dispose() {
scrollController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(appBarHeight),
child: AppBar(
title: Text('Shaking AppBar'),
),
),
body: ListView.builder(
controller: scrollController,
itemCount: 100,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text('Item $index'),
);
},
),
);
}
}
void main() {
runApp(MaterialApp(
home: ShakingAppBar(),
));
}
以上是一个简单的实现高度 AppBar 颤动效果的示例代码。你可以根据自己的需求和喜好进行修改和优化,以实现更丰富的交互体验。
希望这篇介绍对你在 Dart 中实现高度 AppBar 颤动效果有所帮助!