我正在创建一个在其主页上包含标签栏的应用。我希望能够导航到标签之一使用我的FloatingActionButton
。此外,我想保留导航到该选项卡的默认方法,即通过在屏幕上滑动或单击选项卡。
我还想知道如何将该选项卡链接到其他按钮。
这是我主页的截图。
最佳答案
您需要获取 TabBar
Controller 并从按钮 onPressed()
句柄调用其 animateTo()
方法。
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
home: new MyTabbedPage(),
);
}
}
class MyTabbedPage extends StatefulWidget {
const MyTabbedPage({Key key}) : super(key: key);
@override
_MyTabbedPageState createState() => new _MyTabbedPageState();
}
class _MyTabbedPageState extends State<MyTabbedPage> with SingleTickerProviderStateMixin {
final List<Tab> myTabs = <Tab>[
new Tab(text: 'LEFT'),
new Tab(text: 'RIGHT'),
];
TabController _tabController;
@override
void initState() {
super.initState();
_tabController = new TabController(vsync: this, length: myTabs.length);
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Tab demo"),
bottom: new TabBar(
controller: _tabController,
tabs: myTabs,
),
),
body: new TabBarView(
controller: _tabController,
children: myTabs.map((Tab tab) {
return new Center(child: new Text(tab.text));
}).toList(),
),
floatingActionButton: new FloatingActionButton(
onPressed: () => _tabController.animateTo((_tabController.index + 1) % 2), // Switch tabs
child: new Icon(Icons.swap_horiz),
),
);
}
}
如果您对 MyTabbedPageState
使用 GlobalKey
,您可以从任何地方获取 Controller ,因此您可以从以下位置调用 animateTo()
任何按钮。
class MyApp extends StatelessWidget {
static final _myTabbedPageKey = new GlobalKey<_MyTabbedPageState>();
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
home: new MyTabbedPage(
key: _myTabbedPageKey,
),
);
}
}
你可以在任何地方调用它:
MyApp._myTabbedPageKey.currentState._tabController.animateTo(...);
https://stackoverflow.com/questions/50887790/
相关文章:
testing - Flutter 测试的代码覆盖率数据如何显示?
flutter - 如何在 Flutter 中更改状态栏和应用栏颜色?
google-maps - 如何在 flutter 的谷歌地图自定义标记中添加额外的文本?
visual-studio-code - 如何在vscode中包围 flutter 小部件
flutter - 没有 ScrollView 的刷新指示器
dart - Flutter - FloatingActionButton 中的 SimpleDia
visual-studio-code - Visual Studio 代码中的 Flutter 检查