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

Leo*_*rdo 29 flutter flutter-test

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

我真的很迷茫,会帮助你!

谢谢,

Bas*_*usa 56

正如约拿威廉姆斯所说,

如果您MyApp从a 更改为a StatelessWidget,则StatefulWidget需要热重启,因为它是在main中调用的

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

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


MrM*_*ith 11

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


小智 8

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


小智 5

在 flutter 中,如果您需要更改 MyApp,那么在应用程序重新加载后您将无法获得结果。您必须重新启动您的应用程序,然后您可以检查您的编辑是否在应用程序上可用。