我是扑朔迷离的新手,我有一个主页,其中有一个“抽屉”菜单和正文列表内容。
DRAWER MENU =>在抽屉菜单的点击项目列表中,我正在加载PAGE网站网址,在点击BACK时,它将返回我的主页。因此效果很好。
主体列表内容=>在点击项列表中,它很好地加载了网页网址,但是当我想返回首页时,它会返回黑屏:(
Homepage.dart
class HomePage extends StatefulWidget{
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _HomePage();
}
}
class _HomePage extends State<HomePage>{
@override
Widget build(BuildContext context) {
// TODO: implement build
var globalContext = context;
return Scaffold(
appBar: AppBar(
title: Text(
'Benvenuto',
style: TextStyle(color: Colors.white)
),
backgroundColor: Color(0xFF4035b1),
),
drawer: Drawer(
child: new Column(
children: <Widget>[
new UserAccountsDrawerHeader(
accountName: Text('VIA ALBERTO POLIO 54'),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
Color(0xFF4268D3),
Color(0xFF584CD1)
],
begin: FractionalOffset(0.2, 0.0),
end: FractionalOffset(1.0, 0.6),
stops: [0.0, 0.6],
tileMode: TileMode.clamp
)
),
accountEmail: Text('ORARI: LUNEDI - VENERDI 9:30 / 19:30'),
currentAccountPicture: new CircleAvatar(
radius: 50.0,
backgroundColor: const Color(0xFF778899),
backgroundImage: AssetImage("assets/img/icon_logo.jpg"),
)
),
// This list work well!
ListTile(
leading: new Icon(Icons.arrow_forward_ios),
title: new Text("TEST"),
onTap: () {
Navigator.of(context).pop();
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) => Page("title", "www.google.com")));
}
)
],
),
),
// The menu on my body load well the page web url but doesn't return back to my homepage.
body: new Column(
children: <Widget>[
ListTile(
leading: new Icon(Icons.arrow_forward_ios),
title: new Text("TEST"),
onTap: () {
Navigator.of(context).pop();
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) => Page("title", "www.google.com")));
}
)
])
);
}
}
Page.dart
class Page extends StatelessWidget{
final String titleText;
final String urlSource;
Page(this.titleText, this.urlSource);
@override
Widget build(BuildContext context) {
// TODO: implement build
return new WebviewScaffold(
url: urlSource,
appBar: new AppBar(
title: Text(titleText),
),
withZoom: true,
withLocalStorage: true,
hidden: true,
);
}
}
main.dart
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.green,
),
home: HomePage()
);
}
}
感谢您的帮助!
答案 0 :(得分:0)
您不应仅在Navigator.push()之前使用Navigator.pop()。
如果要用新页面替换当前页面,则可以使用Navigator.of(context).pushReplacement()。
如果您只想导航到新路线,请删除pop方法并仅使用push
答案 1 :(得分:0)
这里的真正问题是,当您使用Navigator.pop()时,您正在从“页面堆栈”中将其删除。当您在Drawer()上使用Navigator.pop()时,“。pop”函数将删除Drawer并保留主页。
但是,当您将它与页面的“主体”的一部分ListTile()一起使用时,只需将其删除。
无论在按下时折叠主页的任何内容,例如抽屉,对话框或什至是键盘,都将使用Navigator.pop()删除,实现“ Navigator.pop()”的页面上的任何其他内容也将被删除。而是删除页面。
答案 2 :(得分:0)
Navigator.of(context).pop();
这是扑扑屏幕。 您也可以参考此文档https://api.flutter.dev/flutter/widgets/Navigator/pop.html 您的主页后面没有任何堆栈,因此当您编写Navigator.of(context).pop();时,然后它将弹出没有任何内容的主页,并且始终显示空白屏幕。 当您尝试过Navigator.of(context).pop();在抽屉中,然后它的主页作为扑扑中的一叠即是您的情况下的主页,它将弹出到主页并显示空白页。