我刚开始使用Flutter,在运行代码时遇到了这个问题 “引发了另一个异常:类型'MyApp'不是类型'StatelessWidget'的子类型”。 有趣的是,我的代码中甚至没有这个“ StatelessWidget”。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _MyAppState();
}
}
class _MyAppState extends State<MyApp> {
List<String> _bars = ['Olivio bar'];
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Drinkzz'),
),
body: Column(
children: [
Container(
margin: EdgeInsets.all(10.0),
child: RaisedButton(
onPressed: () {
_bars.add('Riviera Bar');
},
child: Text('Add new Bar!'),
),
),
Column(
children: _bars
.map((element) => Card(
child: Column(
children: <Widget>[
Image.asset('assets/olivio.jpg'),
Text(element)
],
),
))
.toList(),
)
],
)),
);
}
}
我真的迷路了,希望得到一些帮助!
谢谢
答案 0 :(得分:39)
如果您将
MyApp
从StatelessWidget
更改为StatefulWidget
, 需要热重启,因为它是在main中调用的
这在实时编码会话中已多次解释,当您更改initState()
之类的功能时,必须重新启动应用程序。类似的情况也适用于您,当您更改MyApp小部件的状态相关属性时,您需要重新启动应用程序才能使这些更改生效。
基本上,当您热重新加载应用程序时,它会调用build()
函数,仅当您重新启动应用程序时才会调用initState()
,以便该应用程序重新启动所有内容,包括其{{1} }您更改的功能。
答案 1 :(得分:6)
您需要通过使用R(shift + r)进行热重装,因为您在应用程序运行时将MyApp类从StatelessWidget更改为StatefulWidget。
答案 2 :(得分:3)
您需要重新启动应用,以使更改生效。热装暂时无法使用
答案 3 :(得分:0)
扑朔迷离如果您需要更改MyApp,则在重新加载应用程序后将无法获得结果。您必须重新启动应用程序,然后才能检查应用程序上的编辑是否可用。