Класс ModalRoute
Класс ModalRoute расширяет
Route
и блокирует доступ к предыдущему экрану, пока открыт.
MaterialPageRoute
- частный случай ModalRoute.
Текущий маршрут ищут через
of
и читают settings.
Синтаксис
ModalRoute.of(context)
Методы
| Метод | Описание |
|---|---|
of |
Возвращает ModalRoute, связанный с context.
|
Пример
Давайте узнаем, активен ли маршрут:
import 'package:flutter/material.dart';
class ActiveLabel extends StatelessWidget
{
const ActiveLabel({super.key});
@override
Widget build(BuildContext context)
{
var route = ModalRoute.of(context);
var label = route?.isCurrent ?? false;
return Text('$label');
}
}
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: ActiveLabel(),
),
),
),
);
}
На экране по центру true: корневой ModalRoute сейчас верхний и активный.
Пример
Давайте прочитаем arguments через ModalRoute:
import 'package:flutter/material.dart';
class ModalArgsPage extends StatelessWidget
{
const ModalArgsPage({super.key});
@override
Widget build(BuildContext context)
{
var args = ModalRoute.of(context)?.settings.arguments;
return Scaffold(
body: Center(
child: Text('$args'),
),
);
}
}
void main()
{
runApp(
MaterialApp(
home: Builder(
builder: (context) {
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute<void>(
settings: const RouteSettings(
arguments: '12345',
),
builder: (ctx) => const ModalArgsPage(),
),
);
},
child: const Text('abcde'),
),
),
);
},
),
),
);
}
На втором экране по центру '12345' из settings ModalRoute.
Смотрите также
-
метод
of,
доступ кModalRouteиз context -
класс
MaterialPageRoute,
MaterialреализацияModalRoute -
класс
RouteSettings,
имя и arguments уModalRoute -
виджет
PopScope,
контрольpopдляModalRoute