【发布时间】:2019-12-06 13:01:13
【问题描述】:
我有一个带有 2 个选项卡和一个浮动操作按钮的选项卡。 我有一个单独的类来填充我的标签栏视图。 我想从父浮动操作按钮按下方法进行更改或调用该选项卡视图中的方法。 下面我用简单的文本和行为简化了场景。 通过滑动选项卡,调用第二个 initstate() 方法,调试器在
处停止strTitle=widget.txt;
我需要在按下按钮时发生同样的事情。 如果颤振可以在滑动时自动调用 initstate,为什么我不能这样做。应该有一些我不知道的方式。
import 'package:flutter/material.dart';
class MyTabbedPage extends StatefulWidget {
const MyTabbedPage({Key key}) : super(key: key);
@override
_MyTabbedPageState createState() => _MyTabbedPageState();
}
class _MyTabbedPageState extends State<MyTabbedPage>
with SingleTickerProviderStateMixin {
int i = 0;
final List<Tab> myTabs = <Tab>[
Tab(
text: 'LEFT',
),
Tab(text: 'RIGHT'),
];
TabController _tabController;
@override
void initState() {
super.initState();
_tabController = TabController(vsync: this, length: myTabs.length);
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
pressed() {
i = i + 1;
setState(() {});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
bottom: TabBar(
controller: _tabController,
tabs: myTabs,
),
),
floatingActionButton: FloatingActionButton(
onPressed: pressed,
child: Icon(Icons.power_settings_new),
),
body: TabBarView(
controller: _tabController,
children: myTabs.map((Tab tab) {
String label = tab.text.toLowerCase();
if (label.contains("right")) {
label = "Modified Right";
}
return Tabbarview1(label + ' ' + i.toString());
}).toList(),
),
);
}
}
class Tabbarview1 extends StatefulWidget {
final String txt;
Tabbarview1(this.txt);
@override
_Tabbarview1State createState() => _Tabbarview1State();
}
class _Tabbarview1State extends State<Tabbarview1> {
String strTitle = "0";
@override
void initState() {
super.initState();
strTitle = widget.txt;
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return Container(
child: Center(
child: Text(strTitle),
),
);
}
}
【问题讨论】: