【发布时间】:2020-12-23 18:11:43
【问题描述】:
我是 Flutter 新手,导航有问题。我的应用有多个页面,我无法理解错误以及如何修复它。
我在网上搜索并尝试了我在 Git/Stack 或 Google 上找到的所有内容,但没有任何效果。
这是错误:'!_debugLocked': is not true.
这是代码:
这是第一个 .dart 文件,错误是当我尝试执行 Navigator.of ..... 导入'package:flutter/material.dart';
class FirstScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.grey[100],
body: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
SizedBox(
height: 320,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'C.R',
style: TextStyle(
fontSize: 120,
fontFamily: 'Membra',
),
)
],
),
SizedBox(
height: 200,
),
FloatingActionButton(
backgroundColor: Colors.white,
child: Image.asset('images/arrow_next.png'),
onPressed: () {
Navigator.of(context).pushNamedAndRemoveUntil(
'/SecondScreen', (Route<dynamic> route) => false);
},
),
],
),
);
}
}
这是我想从第一个文件/页面转到的第二个 .dart 文件。
import 'package:flutter/material.dart';
import 'NewWidget_Creator.dart';
class SecondScreen extends StatefulWidget {
@override
_SecondScreenState createState() => _SecondScreenState();
}
class _SecondScreenState extends State<SecondScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Center(
child: NewWidget(
'Schede',
Navigator.of(context).pushNamedAndRemoveUntil(
'/SecondScreen', (Route<dynamic> route) => false)),
),
NewWidget(
'Orario',
Navigator.of(context).pushNamedAndRemoveUntil(
'/SecondScreen', (Route<dynamic> route) => false)),
NewWidget(
'Pausa',
Navigator.of(context).pushNamedAndRemoveUntil(
'/SecondScreen', (Route<dynamic> route) => false)),
],
),
);
}
}
NewWidgetCreator .dart 文件:
import 'package:flutter/material.dart';
class NewWidget extends StatelessWidget {
String Name_of_button;
Future<dynamic> send_toNextPage;
NewWidget(this.Name_of_button, this.send_toNextPage);
@override
Widget build(BuildContext context) {
return FlatButton(
onPressed: () {
send_toNextPage;
},
child: Container(
child: Text(
Name_of_button,
textAlign: TextAlign.center,
style: TextStyle(
fontFamily: 'Membra',
fontSize: 50,
),
),
),
);
}
}
提前谢谢你。
【问题讨论】:
-
你能告诉我们
NewWidget_Creator.dart里面是什么吗?你不觉得,你过度使用pushNamedAndRemoveUntil吗?为什么要删除导航器堆栈中的所有路由?使用Navigator.of(context).pushNamed('/SecondScreen')不是更方便吗? -
我发布了 newWidget_Creator.dart 文件并使用了 Navigator.of(context).pushNamed('/SecondScreen') 但我得到了同样的错误
-
是的,我知道它不会影响问题,但也许它会让你知道你想要什么:)
标签: flutter flutter-navigation