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();
          },)),
        ));
  }
}