web-dev-qa-db-ja.com

別の例外がスローされました:タイプ「MyApp」はタイプ「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(),
              )
            ],
          )),
    );
  }
}

私は本当に行方不明になっており、いくらか助けになります!

おかげで、

25
Leonardo

ジョナ・ウィリアムズが言ったように

MyAppStatelessWidgetからStatefulWidgetに変更した場合、メインで呼び出されるため、ホットリスタートが必要です。

これは、ライブコーディングセッションで何度も説明されてきました。initState()などの関数を変更した場合、アプリを再起動する必要があります。同様のケースが当てはまります。MyAppウィジェットの状態関連のプロパティを変更した場合、それらの変更を有効にするにはアプリを再起動する必要があります。

基本的に、アプリをホットリロードすると、build()関数が呼び出され、initState()は次の場合にのみ呼び出されますアプリを再起動すると、アプリはinitState()関数を変更したウィジェットを含むすべてを再起動します。

48
BasedMusa