Я знаю, как решить проблему, но не знаю, почему это происходит:
У меня есть приложение с 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
внутри!