我想在PageView上添加一个透明的appBar。
Pageview是使用Flutter中的Stacks实现的,因此所有内容都将放置在图像上。由于它与Tabs的工作方式不同,因此我需要放置一个appBar,以便即使在滚动多个pageView的过程中,appBar仍固定在给定位置。
我正在使用以下代码来实现此目的,但是它显示出各种错误。
import 'package:flutter/material.dart';
import 'package:page_transformer/data.dart';
import 'package:page_transformer/intro_page_item.dart';
import 'package:page_transformer/page_transformer.dart';
class IntroPageView extends StatelessWidget{
@override
Widget build(BuildContext context) {
List<Widget> children = new List();
return
Stack(
fit: StackFit.expand,
children: [
_buildBackground(),
_buildforeground()
],
);
}
Widget _buildforeground() => new AppBar(
title: Text('Antara',
textDirection: TextDirection.rtl,),
);
Widget _buildBackground() => PageTransformer(
pageViewBuilder: (context, visibilityResolver) {
return PageView.builder(
controller: PageController(viewportFraction: 1.0),
itemCount: sampleItems.length,
itemBuilder: (context, index) {
final item = sampleItems[index];
final pageVisibility =
visibilityResolver.resolvePageVisibility(index);
return IntroPageItem(
item: item,
pageVisibility: pageVisibility,
);
},
);
},
);
}
请告诉我我错了,而且,我忘了提及浏览量是有状态的小部件,而PageTransformer小部件用于在滚动黑白浏览量时提供视差效果。
谢谢
答案 0 :(得分:0)
您应该对代码进行两次更改以强制高度
StackFit.expand
,因为它使条形图占据整个屏幕AppBar
,并提供一个高度来约束它最后将透明色和高程设置为0.0
@override
Widget build(BuildContext context) {
List<Widget> children = new List();
return Stack(
//fit: StackFit.expand,
children: [
_buildBackground(),
_buildforeground(),
],
);
}
Widget _buildforeground() => SizedBox(
height: 80.0,
child: new AppBar(
backgroundColor: Colors.transparent,
elevation: 0.0,
title: Text(
'Antara',
textDirection: TextDirection.rtl,
style: TextStyle(color: Colors.grey),
),
),
);