flutter - 如何修复'!_debugLocked':在颤动中不正确?
问题描述
我是新手,导航有问题。我的应用程序有多个页面,我无法理解错误以及如何修复它。
我在网上搜索并尝试了在 Git / Stack 或 Google 上找到的所有内容,但没有任何效果。
这是错误:'!_debugLocked':不正确。
这是代码:
这是第一个 .dart 文件,错误是当我尝试执行 Navigator.of ..... import '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
现场send_toNextPage
是一个未来?在这里你有固定的班级NewWidget
class NewWidget extends StatelessWidget {
String buttonName;
String nextPageRoute;
NewWidget(this.buttonName, this.nextPageRoute);
@override
Widget build(BuildContext context) {
return FlatButton(
onPressed: () {
Navigator.of(context).pushNamed(nextPageRoute);
},
child: Container(
child: Text(
buttonName,
textAlign: TextAlign.center,
style: TextStyle(
fontFamily: 'Membra',
fontSize: 50,
),
),
),
);
}
}
这是如何使用它SeconScreen
:
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>[
NewWidget('Schede', '/SecondScreen'),
NewWidget('Orario', '/SecondScreen'),
NewWidget('Pausa', '/SecondScreen'),
],
),
);
}
}
顺便说一句:SecondSreen
可以是StatelessWidget
:
class SecondScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
NewWidget('Schede', '/SecondScreen'),
NewWidget('Orario', '/SecondScreen'),
NewWidget('Pausa', '/SecondScreen'),
],
),
);
}
}
推荐阅读
- arrays - laravel 模型在从同一模型调用另一个函数时返回 null
- php - Laravel 中 auth('api')->user() 的意外行为
- java - 如何将imageview绑定到数组索引mvvm javafx
- android - Recyclerview 向上滚动破坏我的运行时更改
- javascript - 试图将我的应用程序发布在 heroku 上时出现错误:“请求的资源上不存在‘Access-Control-Allow-Origin’标头”
- react-native - 无论文本更改如何,如何读取 TextInput 上的每个按键
- amazon-web-services - AWS VPC 模块公有和私有子网 - Terraform
- c# - 我们可以使用带有字符串属性的 EnumDataType 属性来验证枚举值吗?
- form-data - FormData - 未捕获的 TypeError:无法构造“FormData”:参数 1 不是“HTMLFormElement”类型
- vim - 你能在 emacs 的邪恶模式下使用 vim 脚本和插件吗?邪恶模式的限制是什么?