我在我的 flutter 应用程序上实现了一个带有背景图像的银色应用程序栏。我想让银色应用程序栏的标题在银色应用程序栏处于扩展模式时隐藏。我只想在折叠时显示标题,如何实现此行为?
SliverAppBar(
expandedHeight: 250.0,
floating: false,
pinned: true,
title: Text("Coporate News"),
elevation: 8,
flexibleSpace: FlexibleSpaceBar(
centerTitle: true,
title: Text(""),
background: Stack(
children: [
Container(
height: 400,
child: Image.network(
news['url'],
fit: BoxFit.cover,
),
),
.......
Run Code Online (Sandbox Code Playgroud)
小智 11
import 'package:flutter/material.dart';
class InvisibleExpandedHeader extends StatefulWidget {
final Widget child;
const InvisibleExpandedHeader({
Key? key,
required this.child,
}) : super(key: key);
@override
_InvisibleExpandedHeaderState createState() {
return _InvisibleExpandedHeaderState();
}
}
class _InvisibleExpandedHeaderState extends State<InvisibleExpandedHeader> {
ScrollPosition? _position;
bool? _visible;
@override
void dispose() {
_removeListener();
super.dispose();
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
_removeListener();
_addListener();
}
void _addListener() {
_position = Scrollable.of(context)?.position;
_position?.addListener(_positionListener);
_positionListener();
}
void _removeListener() {
_position?.removeListener(_positionListener);
}
void _positionListener() {
final FlexibleSpaceBarSettings? settings =
context.dependOnInheritedWidgetOfExactType<FlexibleSpaceBarSettings>();
bool visible = settings == null || settings.currentExtent <= settings.minExtent;
if (_visible != visible) {
setState(() {
_visible = visible;
});
}
}
@override
Widget build(BuildContext context) {
return Visibility(
visible: _visible?? false,
child: widget.child,
);
}
}
Run Code Online (Sandbox Code Playgroud)
并在 Sliver AppBar 中使用这个 InvisibleExpanded Widget
return SliverAppBar(
flexibleSpace: FlexibleSpaceBar(
titlePadding: const EdgeInsets.all(20),
background: InteractiveViewer(
child: Image.network(examImagePlaceHolder,
fit: BoxFit.cover, width: double.infinity)),
title: InvisibleExpandedHeader(
child: Text(
'Global Iq Test for all students in the world',
style: primaryTitle,
),
),
),
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3588 次 |
| 最近记录: |