我想在我的身体中而不是在appBar中实现自定义可滚动的TabBar
答案 0 :(得分:1)
我将从水平滚动的listView
开始,然后建立大量ListTile
元素,并使它们可单击。如果要滑动,请添加gesturedetector
。
答案 1 :(得分:0)
您可以使用相同的视图创建自定义列表。这是示例代码
ListView.builder(
itemBuilder: (_, count) {
return Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
color: Colors.green),
child: GestureDetector(
onTap: (){
print("You clicked");
},
child: Text(
list[count],
style: TextStyle(color: Colors.white, fontSize: 12),textAlign: TextAlign.center,
),
),
);
},
itemCount: list.length,
scrollDirection: Axis.horizontal,
)
答案 2 :(得分:0)
尝试使用“ NestedScrollView”,并将信息放在“ flexibleSpace”中的选项卡栏之外
答案 3 :(得分:0)
PageView和PageController
因此,这并不是您要查找的内容,您可以进行水平滚动(scrollView),而不是底部滚动条,但是我希望这可以将您推向正确的方向。这段代码基本上使用pageView
来显示页面,并且由于有页面控制器,您可以将任何按钮或onPress
设置为特定页面的动画。
如果您有任何疑问,请告诉我!
import 'package:flutter/material.dart';
class TestWidget extends StatefulWidget {
TestWidget({Key key}) : super(key: key);
@override
_TestWidgetState createState() => _TestWidgetState();
}
class _TestWidgetState extends State<TestWidget> {
int _selectedIndex = 0;
PageController _pageController;
@override
void initState() {
super.initState();
_pageController = PageController();
}
@override
void dispose() {
_pageController.dispose();
super.dispose();
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Tab Bar"),
),
body: Center(
child: Column(
children: <Widget>[
Expanded(
flex: 10,
child: ButtonBar(
alignment: MainAxisAlignment.center,
children: <Widget>[
FlatButton(
splashColor: Colors.blueAccent,
color: Colors.blue,
onPressed: () {
_pageController.animateToPage(0, duration: Duration(milliseconds: 500), curve: Curves.ease);
},
child: Text("One",),
),
FlatButton(
splashColor: Colors.blueAccent,
color: Colors.blue,
onPressed: () {
_pageController.animateToPage(1, duration: Duration(milliseconds: 500), curve: Curves.ease);
},
child: Text("Two",),
),
FlatButton(
splashColor: Colors.blueAccent,
color: Colors.blue,
onPressed: () {
_pageController.animateToPage(2, duration: Duration(milliseconds: 500), curve: Curves.ease);
},
child: Text("Three",),
)
],
),
),
Expanded(
flex: 40,
child: PageView(
controller: _pageController,
children: [
Text("Page One"),
Text("Page Two"),
Text("Page Three")
],
),
),
],
),
),
);
}
}
基本上,您可以在保持滑动功能的同时使用任何您不会切换页面的标签栏或按钮:-)