我开始努力应对。看起来很不错而且很容易,但是涉及到错误时没有太多资源。无论如何,经过长时间的思考,检查和即兴创作,我开始在网上搜索答案,好吧,那是没有的。因此,我想问大家,也许有人可以向我解释为什么我会收到该错误,这是什么意思,以及如何消除它。
哦,在深入之前,我可能应该提到我正在使用flutter_bloc。
好,所以我有这样的代码:
class Settings extends StatelessWidget {
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("SomeApp",style: TextStyle(color: Colors.white)),
automaticallyImplyLeading: false,
backgroundColor: myBlue.shade50,
actions: <Widget>[
IconButton(
icon: new Icon(FontAwesomeIcons.download,color: Colors.white),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => DownloadView()),
);
},
),
IconButton(
icon: new Icon(FontAwesomeIcons.chevronCircleLeft,color: Colors.white),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => MainWindow()),
);
},
),]
),
body: Container(
padding: EdgeInsets.symmetric(vertical: 16),
alignment: Alignment.center,
child: new BlocBuilder<SettingsBloc, SettingsState>(
builder: (context, state) {
if (state is SettingsNotLoaded) {
return new Center(
child: Text(
'count1',
style: TextStyle(fontSize: 24.0,color: Colors.black),
)
);
} else if (state is SettingsLoaded) {
return new Center(
child: Text(
'count2',
style: TextStyle(fontSize: 24.0,color: Colors.black),
)
);
}
else
{
return new Center(
child: Text(
'count3',
style: TextStyle(fontSize: 24.0,color: Colors.black),
)
);
}
},
),
),
);
}
当启动我的应用程序时,我会按照自己的方式看到appBar,但是在正文中看不到任何文本(我应该看到count1,count2或count3),但是却收到错误消息:“每个孩子都必须只能布置一次。”参考第5-return new Scaffold(
行。
说真的,这使我发疯。有人知道吗?
在此先感谢大家的问候!
PS。当然,您也可以在flutter_bloc页面上的https://flutter.dev/docs/development/ui/layout/tutorial上以及在Google中搜索信息。
编辑1 一些语法错误 编辑2 添加了修改信息
答案 0 :(得分:26)
您好,我遇到了同样的问题,我认为这只是flutter.Bug中的一个错误,请停止然后重新安装您的应用
答案 1 :(得分:8)
这不是扑朔迷离的错误,尽管上面的解决方案是正确的,但有时似乎失败了,我也遇到过同样的问题。
尝试以下命令
flutter clean
然后再次运行
flutter run
或
或者,如果您使用的是Android Studio(已启用Flutter插件)
转到工具> Flutter> Flutter Clean
然后再次运行该应用程序, 与上述命令相同
编辑: 在熟悉Flutter大约一个星期之后,现在我确实了解到,对代码进行更改(例如在pubspec.yaml中添加新的依赖项)需要停止应用程序并再次运行,我确实注意到IDE中的GUI(我使用Android Studio)可能会出现问题,命令行中的上述命令可以正常工作。
快乐编码:)
答案 2 :(得分:7)
最近我有同样的错误。
在我的情况下,该错误是由于彼此嵌套两个 Expanded Widgets 而引起的。
通过删除父级扩展小部件,错误已消失。
答案 3 :(得分:3)
尝试以下操作:
它与我一起用于Android设备。
答案 4 :(得分:2)
当我执行热重载时,我遇到了同样的问题,然后执行了热重启动,然后它消失了。看起来像是Flutter错误。
答案 5 :(得分:2)
flutter clean
对我来说很好,尽管可以复制
自从我在应用程序中实现Streams
以来,这一切就开始了。
我假设通过使用StreamController
并更改曾经侦听该流的内容,会在运行时产生错误,并与我返回到{{1 }}。
再现错误的代码:
StreamBuilder
例如:
答案 6 :(得分:0)
我最近遇到了这个问题,我发现使用热重装次数仅推动设计中的修改或任何存储的sqlite数据。
答案 7 :(得分:0)
我面临着同样的问题。我做了以下事情,
希望这行得通。
答案 8 :(得分:0)
尝试:
您可以在“ android / app / build.gradle” => defaultConfig / applicationId
中找到包的名称。Obs:还请记住,只有在解决了导致此错误的问题的情况下,这才起作用。
这对我有用。
答案 9 :(得分:0)
对于任何在iOS模拟器中遇到此错误的人,卸载并重新安装该应用程序对我来说都是有效的。当我们过多使用热重装时,就会发生这种情况。
我的Flutter版本:Flutter (Channel master, 1.22.0-2.0.pre.66, on Mac OS X 10.15.3 19D76, locale en-LK)
,并且我正在使用android studio构建
答案 10 :(得分:0)
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
void main()=> runApp(BMIcalculatro());
class BMIcalculatro extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(
primaryColor: Color(0xFF0A0E21),
scaffoldBackgroundColor: Color(0xFF0A0E21),
),
home: InputPage(),
) ;
} }
const activColor = Color(0xFF1D1E33);
const inActiveColor = Color(0XFF111328);
enum Gender{
male, female
}
class InputPage extends StatefulWidget {
@override
_InputPageState createState() => _InputPageState();
}
class _InputPageState extends State {
Gender genderSelected;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('BMIcalculator'),
centerTitle: true,
),
body: Column(
children: [
Expanded(
child: Row(
children: [
Expanded(
child: GestureDetector(
onTap: () {
setState(() {
genderSelected=Gender.male;
});
},
child: ReusableCard(
colour: genderSelected ==Gender.male ? activColor: inActiveColor,
cardChaild: IconrContakt(
icone: FontAwesomeIcons.mars,
name: "MAIL",
),
),
),
),
Expanded(
child: GestureDetector(
onTap: () {
setState(() {
genderSelected=Gender.female;
});
},
child: ReusableCard(
colour: genderSelected==Gender.female ? activColor:inActiveColor,
cardChaild: IconrContakt(
icone: FontAwesomeIcons.venus,
name: "female",
),
),
),
),
],
),
),
Expanded(
child: Expanded(
child: ReusableCard(
colour: activColor,
),
),
),
Expanded(
child: Row(
children: [
Expanded(
child: ReusableCard(
colour: activColor,
)),
Expanded(
child: ReusableCard(
colour: activColor,
),
),
],
),
),
Container(
margin: EdgeInsets.only(top: 12),
decoration: BoxDecoration(
color: Color(0xFFEB1555),
),
child: Center(
child: Text(
'BMI CALCULATOR',
style: TextStyle(color: Colors.white, fontSize: 20),
)),
width: double.infinity,
height: 80.0,
)
],
),
);
} }
class IconrContakt extends StatelessWidget {
IconrContakt({this.icone, this.name});
final IconData icone;
final String name;
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
icone,
size: 80,
),
SizedBox(
height: 15,
),
Text(
name,
style: TextStyle(fontSize: 18.0),
)
],
);
} }
class ReusableCard extends StatelessWidget {
ReusableCard({@required this.colour, this.cardChaild});
final Color colour;
final Widget cardChaild;
@override
Widget build(BuildContext context) {
return Container(
child: cardChaild,
margin: EdgeInsets.all(12.0),
decoration: BoxDecoration(
color: colour,
borderRadius: BorderRadius.circular(10.3),
),
);
} }
这里是错误
<块引用>======== 小部件库捕获的异常=============================== =
'package:flutter/src/widgets/framework.dart':断言失败:第 5022 行 pos 16:>'child
是!'
ParentDataElement':不是真的。'
相关的导致错误的小部件是 Scaffold lib\home.dart:23
=========================================== ==================================
======== 渲染库捕获的异常==============================< /p>
每个孩子必须被布置一次。
导致错误的相关小部件是 Scaffold。
答案 11 :(得分:0)
在以下情况下可能会发生此错误:
ChildBackButtonDispatcher
build
方法中优先:class _HomeState extends State<Home> {
HomeRouterDelegate _routerDelegate;
final _state = HomeState();
ChildBackButtonDispatcher _backButtonDispatcher;
@override
void initState() {
super.initState();
_routerDelegate = HomeRouterDelegate(_state);
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
_backButtonDispatcher = Router.of(context)
.backButtonDispatcher
.createChildBackButtonDispatcher();
}
@override
Widget build(BuildContext context) {
// The app will throw an exception 'Each child must be laid out exactly once.'
// without this line on each Hot Reload
// https://stackoverflow.com/a/66258147/1321917
_backButtonDispatcher.takePriority();
return Router(
routerDelegate: _routerDelegate,
backButtonDispatcher: _backButtonDispatcher,
);
}
}
答案 12 :(得分:0)
在 widget
的构造函数中引用 State
时出现此错误:
class MyWidget extends StatefulWidget {
MyWidget(this.data, {Key? key}) : super(key: key);
final String data;
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
_MyWidgetState() {
debugPrint(widget.data); // This line causes error.
}
@override
Widget build(BuildContext context) {
return Container();
}
}