Flutter 如何删除颤振中的第二个appbar
我正在尝试使用Flutter 如何删除颤振中的第二个appbar,flutter,appbar,Flutter,Appbar,我正在尝试使用flatter构建一个演示聊天应用程序。在我的主屏幕之后,我正在使用Navigator。按进入详细信息屏幕。 问题截图: 第一屏的构建方法: @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text("Chat Thread App"), actions: <Widget>[ Ico
flatter
构建一个演示聊天应用程序。在我的主屏幕之后,我正在使用Navigator。按进入详细信息屏幕。
问题截图:
第一屏的构建方法:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Chat Thread App"),
actions: <Widget>[
IconButton(
icon: Icon(Icons.settings),
onPressed: () {
Navigator.pushNamed(context, '/settings');
},
)
],
),
body: isLoading
? Center(
child: CircularProgressIndicator(),
)
: new ChatThreadListCard(messageThreads: _messageThreadLists, user: _user,),
);
}
产生问题的第二个屏幕的构建方法:
return Scaffold(
appBar: AppBar(
title: Text("Chat demo"),
),
body: WillPopScope(
child: isLoading
? Center(
child: CircularProgressIndicator(),
)
: Stack(
alignment: AlignmentDirectional.bottomCenter,
children: <Widget>[
SizedBox(
width: 300,
height: 300,
),
Column(
children: <Widget>[
buildChat(),
buildInput(),
],
)
],
),
onWillPop: onBackPress,
),
);
返回脚手架(
appBar:appBar(
标题:文本(“聊天演示”),
),
正文:Willposcope(
孩子:孤岛
?中心(
子对象:CircularProgressIndicator(),
)
:堆栈(
对齐:对齐方向.bottomCenter,
儿童:[
大小盒子(
宽度:300,
身高:300,
),
纵队(
儿童:[
buildChat(),
buildInput(),
],
)
],
),
onWillPop:onBackPress,
),
);
我猜在您设置材质应用程序的地方有些不正常
app.dart:
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage());
}
}
主页和第二页
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
@override
State createState() => HomePageState();
}
class HomePageState extends State<HomePage> with TickerProviderStateMixin {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('First Page'),
),
body: Container(
child: Center(child: RaisedButton(child: Text('Forward'), onPressed: () async {
await Navigator.push(context, MaterialPageRoute(builder: (context) => SecondPage()));
},)),
));
}
}
class SecondPage extends StatefulWidget {
@override
State createState() => SecondPageState();
}
class SecondPageState extends State<SecondPage> with TickerProviderStateMixin {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Second Page'),
),
body: Container(
child: Center(child: RaisedButton(child: Text('Backward'), onPressed: () {
Navigator.of(context).pop();
},)),
));
}
}
导入“包装:颤振/材料.省道”;
类主页扩展了StatefulWidget{
@凌驾
State createState()=>HomePageState();
}
类HomePageState使用TickerProviderStateMixin扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“第一页”),
),
主体:容器(
child:Center(child:RaisedButton(child:Text('Forward'),onPressed:()异步{
wait Navigator.push(上下文,MaterialPageRoute(builder:(context)=>SecondPage());
},)),
));
}
}
类SecondPage扩展StatefulWidget{
@凌驾
State createState()=>SecondPageState();
}
类SecondPageState使用TickerProviderStateMixin扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“第二页”),
),
主体:容器(
子:居中(子:升起按钮(子:文本('Backward'),按下时:(){
Navigator.of(context.pop();
},)),
));
}
}
产生:
问题是,我在scaffold的主体中创建了一个MaterialApp小部件。因此,当调用onTap方法时,MaterialApp区域中的新屏幕被替换。没有更换整个屏幕
诀窍是删除returnnewmaterialapp()
谢谢大家 不要嵌套Scaffold
你能详细说明一下吗?我不应该在第二个屏幕上使用脚手架吗?如果我没有在第二个屏幕上使用脚手架,那么后退按钮就不会出现。你能键入错误吗?我看不到图片,我认为imgur在这里被禁止。问题是,当我没有在第二个屏幕上使用脚手架并导航到它时,它不会显示后退按钮。而且,当我在第二个屏幕中使用scaffold和appbar时,第二个屏幕中有两个appbar。@GünterZöchbauermain.dart代码:void main(){runApp(MaterialApp)(title:'Chat apps Demo',initialRoute:'/',routes:{'/':(context)=>SplashScreen(),'/login':(context)=>LoginScreen(),'/home':(context)=>ChatThreadScreen(),'/settings':(context)=>SettingScreen(),}));}之后:如果(isLoggedin){Navigator.pushReplacementNamed(context,“/home”);}否则{Navigator.pushReplacementNamed(context,“/login”);}很抱歉,我不确定如何在那里添加新行。这是pastebin链接
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
@override
State createState() => HomePageState();
}
class HomePageState extends State<HomePage> with TickerProviderStateMixin {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('First Page'),
),
body: Container(
child: Center(child: RaisedButton(child: Text('Forward'), onPressed: () async {
await Navigator.push(context, MaterialPageRoute(builder: (context) => SecondPage()));
},)),
));
}
}
class SecondPage extends StatefulWidget {
@override
State createState() => SecondPageState();
}
class SecondPageState extends State<SecondPage> with TickerProviderStateMixin {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Second Page'),
),
body: Container(
child: Center(child: RaisedButton(child: Text('Backward'), onPressed: () {
Navigator.of(context).pop();
},)),
));
}
}