ПОЧЕМУ операция навигатора запрашивается с контекстом, который не включает навигатор - PullRequest
0 голосов
/ 29 октября 2018

Я знаю, как решить проблему, но не знаю, почему это происходит:

У меня есть приложение с 2 экранами:

Это main.dart:

import 'package:flutter/material.dart';
import 'HomeActivity.dart';

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

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new HomeActivity();
  }
}

HomeActivity.Dart:

import 'package:flutter/material.dart';
import 'AddGameActivity.dart';

class HomeActivity extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: AppBar(title: new Text("Home")),
        floatingActionButton: FloatingActionButton(
            onPressed: () => Navigator.push(context, new MaterialPageRoute(builder: (context) => new AddGameActivity())),
            child: new Icon(Icons.add))),
    );
  }

Так что здесь у меня есть экран с кнопкой FAB, чтобы перейти к AddGameActivity, когда я нажимаю кнопку FAB, это сообщение об ошибке:

Запрошена операция навигатора с контекстом, который не включает навигатор

Теперь, чтобы решить эту проблему, я добавил MaterialApp к main.dart и удалил его из HomeActivity.dart следующим образом:

main.dart:

import 'package:flutter/material.dart';
import 'HomeActivity.dart';

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

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(home: HomeActivity());
    }
}

HomeActivity:

import 'package:flutter/material.dart';
import 'AddGameActivity.dart';

class HomeActivity extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: AppBar(title: new Text("Home")),
        floatingActionButton: FloatingActionButton(
            onPressed: () => Navigator.push(context, new MaterialPageRoute(builder: (context) => new AddGameActivity())),
            child: new Icon(Icons.add)));
  }
}

В том случае, когда я добавляю приложение Материал в main.dart, оно работает без проблем.

Итак, мои вопросы: ПОЧЕМУ это происходит? в обоих случаях у меня есть Material app, который имеет Scaffold внутри!

...