我有一个flutter
应用,其中主屏幕是这样的tabBar
:
class MainRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top]);
return MaterialApp(
home: DefaultTabController(
length: 3,
child: Scaffold(
body: TabBarView(
physics: NeverScrollableScrollPhysics(),
children: [
Container(
color: Color.fromRGBO(40, 40, 40, 1.0),
child: Tab1(),
),
Container(
color: Color.fromRGBO(40, 40, 40, 1.0),
child: Tab2(),
),
Container(
color: Color.fromRGBO(40, 40, 40, 1.0),
child: Tab3(),
),
],
),
bottomNavigationBar: TabBar(
labelStyle: null,
tabs: [
Tab(
icon: Icon(MdiIcons.home),
),
Tab(
icon: Icon(MdiIcons.settings),
),
Tab(
icon: Icon(MdiIcons.account),
)
],
indicatorColor: Colors.transparent,
labelColor: Color.fromRGBO(255, 255, 255, 1),
unselectedLabelColor: Color.fromRGBO(255, 255, 255, .3),
),
backgroundColor: Colors.black,
),
),
);
例如,我的Tab3()看起来像这样:
class Tab3 extends StatefulWidget {
@override
State<StatefulWidget> createState() => Tab3State();
}
class Tab3State extends State<Tab3> {
@override
Widget build(BuildContext context) {
// TODO: Implement build
return Scaffold(
body: Center(
child: Container(
padding: EdgeInsets.only(top: 50),
width: MediaQuery
.of(context)
.size
.width,
height: MediaQuery
.of(context)
.size
.height,
color: Colors.white,
child: Column(
children: <Widget>[
Container(
padding: EdgeInsets.all(10),
child: RaisedButton(
padding: const EdgeInsets.all(20.0),
textColor: Colors.white,
onPressed: () {
print("GAllery tapped");
},
color: Colors.blue,
elevation: 10,
child: Text("Gallery"),
),
),
],
),
),
),
);
}
}
该应用在模拟器中运行正常,但是当我在真正的Adnroid设备上运行时,水龙头出现了问题。
当显示MainRoute
时,如果我尝试通过点击图标导航到最后一个选项卡,则第一次和第二次从现在开始我都无法识别它(没有焦点??)。它可以按预期工作,并且仅在第一次点击时与所有选项卡相同。
现在,当加载Tab3
时,“图库”按钮无法识别第一个拍子(也没有聚焦??),但随后识别出第二个拍子,并且从现在开始起作用。
代码有问题吗?代码架构有问题吗?我的真实设备(三星Galaxy S7)有问题吗?
答案 0 :(得分:0)
我不知道它是否相关,但是您不应该有2个Scaffold
小部件。
尝试删除Tab3State
类中的一个,无论如何您都不需要它。