Я знаю, как решить проблему, но я не знаю, почему это происходит:
У меня есть приложение с двумя экранами:
Этот 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();
}
}
ГлавнаяАктивность.Дарт:
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
следующим образом:
основной.дротик:
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());
}
}
ГлавнаяАктивность:
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
!