提问者:小点点

另一个异常被抛出:type'MyApp'不是type'StatelessWidget'的子类型


我刚刚开始使用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(),
              )
            ],
          )),
    );
  }
}

我真的迷路了,会得到一些帮助的!

谢谢,


共3个答案

匿名用户

正如乔纳·威廉姆斯所说,

如果您将MyAppStatelessWidget更改为StatefulWidget,则需要热重启,因为它是在main中调用的

这在实时编码会话中已经多次解释过,当您更改initState()等函数时,您必须重新启动应用程序。类似的情况也适用于您,当您更改MyApp小部件的状态相关属性时,您需要重新启动应用程序才能使这些更改生效。

基本上,当您热重新加载应用程序时,它会调用build()函数,只有在您重新启动应用程序时才会调用initState(),以便应用程序重新启动所有内容,包括您更改了其initState()函数的小部件。

匿名用户

您需要重新启动应用才能使更改生效。热重新加载此时不起作用

匿名用户

您需要使用R(shift r)进行热重新加载,因为您在应用程序运行时将MyApp类从StatelessWidget更改为StatefulWidget。

相关问题