【发布时间】:2020-09-21 19:20:09
【问题描述】:
以下代码生成一个可滚动列表以及一个“半透明固定条头”。
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: NestedScrollView(
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return [
SliverPersistentHeader(
delegate: _SliverPersistentHeaderDelegate(),
pinned: true,
),
];
},
body: ListView.builder(
itemBuilder: (context, index) {
return ListTile(
title: Container(
color: Colors.amber.withOpacity(0.3),
child: Text('Item $index'),
),
);
},
),
),
),
);
}
}
class _SliverPersistentHeaderDelegate extends SliverPersistentHeaderDelegate {
@override
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent) {
return Container(
color: Colors.blue.withOpacity(0.75),
child: Placeholder(),
);
}
@override double get maxExtent => 300;
@override double get minExtent => 200;
@override bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) => true;
}
一切都好;除了,我需要“标题”是透明的,但是让它半透明会导致下面的列表项被显示出来(如下面的屏幕截图所示)。
那么,如何“屏蔽”通过“半透明标题”可见的“列表项”?
【问题讨论】:
-
如果你希望它是“半透明的”,如果不是列表项,你希望看到什么?
-
@matehat “标题”将包含一些小部件;此外,整个事物将被“覆盖”在背景层上。但是,代码都很好,除了我希望 "list of items" 在它自己的 view 中 "framed" (到不能通过“标题”观察到)。
标签: flutter mask flutter-sliver