- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 flutter 应用程序。我有一个有六个 child 的底部栏。其中两个是 TabBar 屏幕,但我对它们有疑问。每当我在 TabBar/TabBarView 中更改选定的选项卡并移动到底部栏导航中的其他屏幕并返回到带有选项卡的上一个屏幕时,TabBarView 会显示最后选择的选项卡。
附代码:
return SafeArea(
child: DefaultTabController(
length: 4,
initialIndex: 0,
key: widget.key,
child: Scaffold(
//backgroundColor: Colors.white,
appBar: ColoredTabBar(
color: Theme.of(context).primaryColorLight,
tabBar: TabBar(
unselectedLabelStyle: TextStyle(fontSize: textSize*0.8),
indicator: BoxDecoration(
borderRadius: BorderRadius.only(topLeft: Radius.circular(00),topRight: Radius.circular(00)),
color: Theme.of(context).primaryColor,
//border: Border.all(),
),
//isScrollable: true,
labelStyle: TextStyle(fontSize: textSize),
unselectedLabelColor: Theme.of(context).textTheme.body1.color,
labelColor: Theme.of(context).unselectedWidgetColor,
tabs: [
Tab(text: "Paquetes"),
Tab(text: "Micro"),
Tab(text: "Recargas"),
Tab(text: "A la medida"),
],
),
mywalletResponse: widget.wallet,
numero: widget.defaultNumber,
onPressed: widget.onPressed,
onTap: widget.onTap,
),
body: TabBarView(
//controller: _tabController2,
key: widget.key,
children: [
CombosScreen(),
MicroScreen(),
RecargasScreen(),
CustomScreen(), // tercera pagina: notificaciones
],
),
)))
;
ColoredTabBar 小部件是:
class ColoredTabBar extends Container implements PreferredSizeWidget{
ColoredTabBar({@required this.color, @required this.tabBar, @required this.mywalletResponse, @required this.numero, @required this.onTap, @required this.onPressed});
final Color color;
final TabBar tabBar;
final WalletResponse mywalletResponse;
final String numero;
final VoidCallback onTap;
final VoidCallback onPressed;
@override
Size get preferredSize => Size.fromHeight(103.0);
@override
Widget build(BuildContext context) => Container(
color: color,
child: Column(
children: <Widget>[
Header(number: numero, walletModel: mywalletResponse, onTap: onTap, onPressed: onPressed,),
tabBar,
],
)
);
}
因此,例如,我转到带有 defaultTabController 的小部件并选择索引 2 处的小部件,稍后我移动到底部导航栏中的另一个小部件,然后我返回到带有 defaultTabController 的前一个小部件。所选选项卡是索引 0 处的选项卡,但 TabBarView 显示索引 2 处的小部件。
你知道如何用标签和小部件相同的方式初始化索引吗?
最佳答案
您必须保存最后一个标签索引,一旦您重定向到标签 View 屏幕,然后通过 TabController 重新设置标签索引的值。
让我们使用 TabBarView
而不是 DefaultTabController
,它与 TabController
一起工作
class _Page {
_Page({this.widget});
final Widget widget;
}
List<_Page> _allPages;
class Home extends StatefulWidget {
@override
_HomeState createState() => new _HomeState();
changeTabIndex(int index) {
_HomeState()._controller.animateTo(index);
}
}
class _HomeState extends State<Home> with TickerProviderStateMixin {
TabController _controller;
_HomeState();
@override
void initState() {
super.initState();
_allPages = <_Page>[
_Page(widget: CombosScreen()),
_Page(widget: MicroScreen()),
_Page(widget: RecargasScreen()),
_Page(widget: CustomScreen()),
];
_controller = TabController(vsync: this, length: 4);
_controller.addListener(_handleTabSelection);
}
_handleTabSelection() { // <--- Save your tab index
if(_controller.indexIsChanging) {
// Save your tab index here
// You can use static variable or BloC state
}
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: TabBarView(
controller: _controller,
children: _allPages.map<Widget>((_Page page){
return SafeArea(
child: Container(
key: ObjectKey(page.widget),
child: page.widget
),
);
}).toList(),
)
)
}
然后就调用
Home.changeTabIndex(yourLastTabIndex);
关于Flutter TabBar/TabBarView 显示错误的 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59317510/
我一直在尝试使用标签更改应用栏标题的许多解决方案,我解决了它,但现在有一个小问题;按下选项卡时,应用栏会随选项卡而变化,但不会随选项卡 View 而变化。在选项卡栏 View 上向左或向右滑动会更改选
我使用 TabBarView 并且我注意到一些非常奇怪的事情。我在所有选项卡的小部件中放置了一些打印消息,以便在滑动选项卡时获得反馈。我得到了这些结果: 从 0 -> 1:选项卡 1 调用,选项卡 3
这是我的布局结构 这是主界面 ListView( children: [ _buildCarousel(), _buildHomeTabBar(), ], ) 这是 HomeT
如何为未选中的标签添加下划线,如下所示: https://ibb.co/mfkzKp 在这里您可以看到未选中的选项卡为灰色,选中的选项卡为蓝色。 最佳答案 我在文档中没有找到任何关于如何自定义禁用指标
我需要在 Flutter 中实现如下布局。 当用户滚动时,我希望整个布局滚动(隐藏标题和标签栏)。但是,我不能将 TabBarView 嵌套在 ListView 中,因为 TabBarView 没有限
我在 SingleChildScrollView 中创建了 TabBar。问题是我想用我的整个应用程序在 TabBarView 中创建可滚动的内容,而不是仅在 TabBarView 中滚动内容。我尝试
我想在我的 flutter 页面中添加一些标签,但没有一个只有标签的页面。 简而言之,我有一些输入字段,在它们下面我想放置我的标签。 我不断收到此错误:TabBarView 没有 TabControl
我想构建一个 UI,其中我在屏幕顶部有一些固定的小部件(在所有选项卡上可见),然后在它们下面我想要一个 TabBarView(底部有选项卡栏),这是否可能而不使您的自己的标签小部件还是 TabBarV
我的 Flutter 应用有 3 个标签页。当应用程序加载时,我希望它加载所有 3 个页面,而不仅仅是它将显示的页面。我的问题是,当滑动到我的其他选项卡时,加载内容需要一秒钟,然后它会显示动画。为这种
想要在 flutter 中克隆 playstore 首页应用栏滚动功能。 Playstore Appbar我正在尝试在 SliverAppBar 底部属性下制作一个包含静态选项卡的屏幕。每当我单击任何
我有一个包含项目列表的 TabBarView,我为每个项目分配了一个 Navigator.push 方法。目前该方法会跳转到新页面。 我的问题是,是否可以导航到 TabBarView 主体内的新页面?
Flutter 的新手,不知道如何在我的 UI 上设置大小限制,以免溢出。尝试使用选项卡制作一些不同的 UI,我在选项卡栏上方有一些组件。基本上我想要这样的东西: ------------------
我想使用 TabBar 和 BottomNavigationBar 来控制相同的 TabBarView,其主体是自定义小部件 RankingTable 的列表(仅在演示中放置一个并使用文本小部件作为第
TabBar 小部件有一个 onTap() 回调,允许检测用户何时刚刚按下了一个选项卡。这很有用,我们可以准备新的 tabView 来显示一些动态数据。 TabBar 小部件还有一个拖动功能,允许更改
我的 tabBar 有一个 StatelessWidget 小部件,其中包含 2 个 statefulWidget。问题是,当单击管理器以查看我的所有选项卡时(默认情况下登陆我的第一个选项卡),tab
我用 DefaultTabController 实现了一个基本的 TabBar 和 TabBarView,见下面的代码。 class MyApp2 extends StatelessWidget {
我有下面的代码来让 TabBarView 与条子效果一起工作。问题是当用户滚动到末尾时我需要加载更多数据。但是每次向下滚动时,_handleScrolling 函数都不会被触发。我必须再次上下滚动才能
我的问题是我想要一个 TabBarView 在 SingleChildScrollView 但它给了我这个错误:RenderFlex child 有非零弹性,但传入的高度约束是无界的。 如果我删除 S
我正在开发一个 flutter 应用程序。我有一个有六个 child 的底部栏。其中两个是 TabBar 屏幕,但我对它们有疑问。每当我在 TabBar/TabBarView 中更改选定的选项卡并移动
Check video for more clearifacation gitlab link 我的代码 import 'package:flutter/material.dart'; import
我是一名优秀的程序员,十分优秀!