android tab pageview,flutter - 在TabBarView内部颤动PageView:滚动到页面末尾的下一个选项卡 - 堆栈内存溢出...

我有3个标签,每个标签内部都有一个PageView。 在PageView的末尾,我希望能够滚动到下一个选项卡。

如果没有指向该方向的页面,有没有办法可以使TabBar滚动而不是PageView滚动? (仅向左或向右滚动)

这是示例代码。 当我向右滚动到第一个选项卡的最后一页时,我想查看第二个选项卡的第一页。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

@override

Widget build(BuildContext context) {

return MaterialApp(home: ScrollableTabsDemo());

}

}

class _Page {

const _Page({ this.icon, this.text });

final IconData icon;

final String text;

}

const List<_page> _allPages = <_page>[

_Page(icon: Icons.grade, text: 'TRIUMPH'),

_Page(icon: Icons.playlist_add, text: 'NOTE'),

_Page(icon: Icons.check_circle, text: 'SUCCESS'),

];

class ScrollableTabsDemo extends StatefulWidget {

static const String routeName = '/material/scrollable-tabs';

@override

ScrollableTabsDemoState createState() => ScrollableTabsDemoState();

}

class ScrollableTabsDemoState extends State with SingleTickerProviderStateMixin {

TabController _controller;

@override

void initState() {

super.initState();

_controller = TabController(vsync: this, length: _allPages.length);

}

@override

void dispose() {

_controller.dispose();

super.dispose();

}

@override

Widget build(BuildContext context) {

final Color iconColor = Theme.of(context).accentColor;

return Scaffold(

appBar: AppBar(

title: const Text('Scrollable tabs'),

bottom: TabBar(

controller: _controller,

isScrollable: true,

tabs: _allPages.map((_Page page) {

return Tab(text: page.text, icon: Icon(page.icon));

}).toList(),

),

),

body: TabBarView(

controller: _controller,

children: _allPages.map((_Page page) {

return SafeArea(

top: false,

bottom: false,

child: PageView.builder(

itemBuilder: (context, position)

{

return Container(child: Center(child: Text(position.toString())));

},

itemCount: 5,

),

);

}).toList(),

),

);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值