LoginSignup
1
0

More than 3 years have passed since last update.

Navigator operation requested with a context that does not include a Navigator.の対処法

Posted at

修正前

import 'package:flutter/material.dart';
import 'package:flutter_location/home.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body:
          Center(
            child: RaisedButton(

              child: Text('次へ'),
              onPressed: (){
                Navigator.push(
                    context,
                    MaterialPageRoute(builder: (context) => MyHome(),
                    )
                );
              },


            )
          )
      ),
    );
  }
}

エラーコード

Navigator operation requested with a context that does not include a Navigator.

原因

flutterの公式ドキュメントでは、画面遷移を行う際に、MaterialApp WidgetとScaffol Widgetを別のクラスに分けて書いていました。しかし、私のコードはそれらをまとめて一つのクラスで書いています。それが原因と考えました。

修正後

import 'package:flutter/material.dart';
import 'package:flutter_location/home.dart';


void main() {
  runApp(MySignUp());
}

class MySignUp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(

      debugShowCheckedModeBanner: false,
      title: 'My Location App',
      home: MySignUpHome(),

    );
  }
}

class MySignUpHome extends StatelessWidget{

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: RaisedButton(
          child: Text('Next to Home'),
          onPressed: (){
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => MyHome()),
            );
          },
        )
      ),
    );
  }
}

エラーが消え、画面遷移ができました。

まとめ

公式のチュートリアルではMaterialApp WidgetとScaffold Widgetをまとめて書いてありました。今回なぜ分けなければいけなかったかは、分かっていません、、、
どなたか教えた頂けると助かります。

参考

Navigator operation requested with a context that does not include a Navigator.エラーの原因

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0