当我导航到页面然后弹回主页时,我的 AppBar 阴影出现问题。结构是:
- HomePage:以自定义滑动 AppBar 和 PageView 作为主体的脚手架: - 滑动 AppBar 由一个 Stack 组成,其中一些 AppBar 小部件作为子项,它们以动画形式出现 - PageView 显示页面内容,其控制器链接到 AppBar 的动画
- SearchPage ==> 通过点击 FAB 调用 Navigator.push(context, MaterialPageRoute(builder: (context) => SearchPage())) 访问
这是 AppBar 的错误:如果我转到 SearchPage 然后弹回来,阴影每次都会变深,就像 AppBar 的高度在增长一样......见下面的 GIF:
如果我使用标准 AppBar 而不是我的自定义滑动 AppBar,这不会出现。它的代码在这里:
class MenuAppBar extends StatefulWidget implements PreferredSizeWidget
{
final PageController pageController;
final List<Widget> children;
MenuAppBar({@required this.pageController, @required this.children});
@override
Size get preferredSize => Size.fromHeight(56.0);
@override
State<StatefulWidget> createState() => _MenuAppBarState();
}
class _MenuAppBarState extends State<MenuAppBar> with SingleTickerProviderStateMixin
{
final List<Widget> sliders = new List<Widget>();
AnimationController _animationController;
@override
void initState()
{
super.initState();
this._animationController = new AnimationController(upperBound: widget.children.length.toDouble() - 1, vsync: this);
widget.pageController.addListener(_onPageSwitch);
}
void _onPageSwitch()
{
this._animationController.value = widget.pageController.page;
}
@override
Widget build(BuildContext context)
{
for(int i = 0; i < widget.children.length; i++)
{
this.sliders.add(this._buildSlider(index: i.toDouble(), child: widget.children[i]));
}
return Stack(children: this.sliders);
}
Widget _buildSlider({double index, Widget child})
{
return SlideTransition(
position: Tween<Offset>(
begin: Offset(index, 0),
end: Offset(index - 1, 0)
).animate(this._animationController),
child: child
);
}
}
知道会出什么问题吗?:(
谢谢 !