#flutter
Вопрос:
В home.dart
я вызываю функцию навигации внутри кнопки с повышенным уровнем
onPressed: (){
Navigator.of(context).push(
MaterialPageRoute(
builder: (context)=>{
return const GameScreen();
}
));
},
Который будет перемещаться на игровой экран.
game_screen.dart
import 'package:flutter/material.dart';
class GameScreen extends StatelessWidget {
const GameScreen({ Key? key }) : super(key: key);
@override
Widget build(BuildContext context) {
return const Scaffold(backgroundColor: Colors.white,);
}
}
Однако я получаю красные волнистые линии под функцией навигации, говорящие
The return type "Set<GameScreen>" isn't a "Widget", as required by the closure's context.
Почему это дает мне ошибку и как это исправить?
Ответ №1:
Я думаю, что вы путаете с машинописным текстом, синтаксиса метода нет () => {...}
, это вернет Set
...
Сделайте это вместо () {...}
этого (работает ...
):
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) {
return const GameScreen();
}
));
},
Или это () => ...
(возвращает ...
):
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => const GameScreen(),
));
},
Ответ №2:
Что ж, ты возвращаешь Set<Widget>
Проблема в том , как вы используете оператор со стрелкой =>
, вы не можете использовать {}
и return
ключевое слово с оператором со стрелкой.
=>
Оператор уже работает как return
А. И в вашем случае {}
это интерпретируется как литерал набора.
Попробуйте это вместо этого:
MaterialPageRoute(
builder: (context) => const GameScreen();
));
Или это:
MaterialPageRoute(
builder: (context) {
return const GameScreen();
}
));
Комментарии:
1. А, понял! Спасибо