flutter - 为什么我的底部导航栏在推送时变为空白?
问题描述
当我在删除发生 Navigator.push.. 的帖子时调用 loadingDelete 方法时,我被定向到个人资料页面,但底部导航栏为空(在图标(内容)为空白时显示为空)。
当我上传或删除帖子时,我一直遇到这个问题..我尝试用 MaterialApp 替换脚手架,但没有奏效......
这是我的 loadingDelete 方法所在的位置:
class PostStateless extends StatelessWidget {
final Post post2;
PostStateless(this.post2);
@override
Widget build(BuildContext context) {
print("REACHED HERE BEG "+post2.toString());
return new Scaffold(
resizeToAvoidBottomInset: false,
body:PostPage(post2),
);
}
}
class PostPage extends StatefulWidget {
final Post post2;
PostPage(this.post2);
@override
PostPageState createState() => new PostPageState(post2);
}
class PostPageState extends State<PostPage> with TickerProviderStateMixin {
...
..
loadingDelete()
{
if(!loadingDeletePost)
return Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("lib/assets/BackToEarth.jpg"),
fit: BoxFit.cover,
),
),
child: Center(
child: Row(
mainAxisSize: MainAxisSize.min, //centered things bil nos
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
CircularProgressIndicator(
valueColor: new AlwaysStoppedAnimation<Color>(Colors.black),
)
]),
/* add child content here */
));
else {
Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) =>
Profile()), (Route<dynamic> route) => false);
//Navigator.push alone redirects me to the profile page with blank nav bar plus arrow back
visible in my app bar(Worse).
}
}
....
}
这是我的个人资料页面结构:
class Profile extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ProfilePage(),
);
}
}
class ProfilePage extends StatefulWidget {
@override
_ProfilePageState createState() => new _ProfilePageState();
}
class _ProfilePageState extends State<ProfilePage> {
...
...
}
这是我的全局底部导航栏的结构,它位于 MaterialApp Widget 下的 mainn dart 文件中:
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Instagram',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
ManageUserModel user;
class _MyHomePageState extends State<MyHomePage> {
ApiService apiService = ApiService();
List<Widget> pages = [
HomePage(),
SearchPage(),
Post(),
NotificationsPage(),
ProfilePage()
];
saveVariable(ManageUserModel user) async {
// save variable
SharedPreferences sharedUser = await SharedPreferences.getInstance();
String userSt=toJson(user);
print("USERST: "+userSt);
sharedUser.setString('user', userSt);
}
@override
void initState() {
apiService.getUsers("beeso").then((result) {
setState(() {
user = result;
print("USERRRR" +user.toString());
saveVariable(user);
});
});
super.initState();
}
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 5,
initialIndex: 0,
child: Scaffold(
body: TabBarView(
children: pages,
),
bottomNavigationBar:
Container(
margin: EdgeInsets.only(bottom: 20),
child: new TabBar(
tabs: [
Tab(
icon: Icon(Icons.home),
),
Tab(
icon: Icon(Icons.search),
),
Tab(
icon: Icon(Icons.add),
),
Tab(
icon: Icon(Icons.favorite),
),
Tab(
icon: Icon(Icons.perm_identity),
),
],
unselectedLabelColor: Colors.black,
labelColor: Colors.blue,
indicatorColor: Colors.transparent,
),
),
),
);
}
}
任何帮助表示赞赏!
解决方案
将导航更改为以下代码:
Navigator.of(context).popUntil((route) => route.isFirst);
推荐阅读
- python - 无法从“easygui”模块导入“floatbox”
- c# - 2个属性浮动范围Asp .Net Core之间的自定义验证
- scrapy - scrapy 站点地图蜘蛛没有提供预期的结果
- apache-spark - Spark 将 Hive 连接到 HDFS 与 Spark 直接连接 HDFS 并在其顶部连接 Hive?
- npm-install - npm 错误!对 https://registry.npmjs.org/ngx-pagination 的请求失败,原因:getaddrinfo EAI_AGAIN registry.npmjs.org registry.npmjs.org:443
- c# - 更改其他文本框时 WPF 绑定文本框值未更新
- ruby-on-rails - 在Rails中erb的文本字段中显示模型的所有ID
- python-3.x - 即使输入相同,相同的代码在主函数和用户定义的函数中使用时也会给出不同的输出
- javascript - D3:条形图的文本不出现
- javascript - 使用伊斯坦布尔插件构建代码时出错