hi,
I want to add a listview widget in tab,but have a space in tab between listview,I want to remove it ,how can i fix it ,thanks
my code is:
ScrollController _scrollController = new ScrollController();
@OverRide
Widget build(BuildContext context) {
return Scaffold(
body: NestedScrollView(
controller: _scrollController,
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return [
SliverAppBar(
expandedHeight: _appBarHeight,
floating: false,
pinned: true,
backgroundColor: FunColors.c_333,
actions: [
new IconButton(
icon: new Icon(Icons.share),
tooltip: "分享话题",
onPressed: () {
showShareBottomSheet(context);
},
)
],
flexibleSpace: FlexibleSpaceBar(
title: Text(widget.topicName,
style: TextStyle(
color: Colors.white,
fontSize: 16.0,
)),
background: new Stack(
fit: StackFit.expand,
children: [
_buildTopicBackground(),
new Align(
alignment: Alignment.bottomRight,
child: new Container(
margin: EdgeInsets.only(bottom: 15.0, right: 15.0),
height: 35.0,
width: 75.0,
child: new RaisedButton(
highlightColor: FunColors.themeColor,
onPressed: () {},
color: FunColors.themeColor,
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(20.0),
),
child: new Text(
"关注",
style: new TextStyle(color: Colors.white),
),
),
),
),
],
),
),
),
SliverPersistentHeader(
delegate: _SliverAppBarDelegate(
_tabController,
),
pinned: true,
),
];
},
body: new TabBarView(
controller: _tabController,
children: [
new TopicDetailChildPage(
TopicDetailPresenter.TYPE_HOT, widget.topicName),
new TopicDetailChildPage(
TopicDetailPresenter.TYPE_NEW, widget.topicName),
],
),
),
);
}
class TopicDetailChildPage extends StatefulWidget {
int type = 0; // 0:hot 1:new
String topicName;
TopicDetailChildPage(this.type, this.topicName);
@OverRide
State createState() {
return new TopicDetailChildState();
}
}
class _SliverAppBarDelegate extends SliverPersistentHeaderDelegate {
_SliverAppBarDelegate(this.controller);
final TabController controller;
@OverRide
double get minExtent => kToolbarHeight;
@OverRide
double get maxExtent => kToolbarHeight;
@OverRide
Widget build(
BuildContext context, double shrinkOffset, bool overlapsContent) {
return new Container(
color: Theme.of(context).cardColor,
height: kToolbarHeight,
child: new TabBar(
controller: controller,
key: new PageStorageKey(TabBar),
labelColor: Colors.black87,
indicatorColor: FunColors.themeColor,
tabs: [
new Tab(text: '最热'),
new Tab(text: '最新'),
],
),
);
}
@OverRide
bool shouldRebuild(_SliverAppBarDelegate oldDelegate) {
// return oldDelegate.controller != controller;
return false;
}
}
class TopicDetailChildState
extends LoadMoreState<TopicDetailPresenter, TopicDetailChildPage>
implements TopicDetailView {
List _dataSource = [];
@OverRide
void initState() {
super.initState();
mPresenter.setType(widget.type);
mPresenter.setTopicName(widget.topicName);
mPresenter.fetchData();
}
@OverRide
Widget build(BuildContext context) {
return _buildContent();
}
Widget _buildContent() {
if (_dataSource == null || _dataSource.isEmpty) {
return showLoading();
} else {
return ListView.builder(
itemCount: _dataSource.length,
itemBuilder: (context, index) {
return new PostWidget(
_dataSource[index], PostWidget.SOURCE_TYPE_TOPIC);
});
}
}
@OverRide
TopicDetailPresenter newInstance() {
return new TopicDetailPresenter();
}
@OverRide
void getTopicDetail(TopicBean topicBean) {}
@OverRide
void getPosts(List posts) {
if (posts != null && posts.isNotEmpty) {
setState(() {
_dataSource.addAll(posts);
});
}
}
}