Класс RouteSettings
Класс RouteSettings описывает метаданные
Route.
Поле name - строка маршрута для
pushNamed.
Поле arguments несёт любой объект на следующий экран.
Синтаксис
const RouteSettings(
name: '/detail',
arguments: 'abcde',
)
Параметры
| Параметр | Описание |
|---|---|
name |
Имя маршрута, например путь экрана. |
arguments |
Произвольные данные, которые экран получает при открытии. |
Пример
Давайте прочитаем arguments на втором экране:
import 'package:flutter/material.dart';
class ArgsHome extends StatelessWidget
{
const ArgsHome({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute<void>(
settings: const RouteSettings(
name: '/show',
arguments: 'abcde',
),
builder: (ctx) => const ArgsShow(),
),
);
},
child: const Text('12345'),
),
),
);
}
}
class ArgsShow extends StatelessWidget
{
const ArgsShow({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: ArgsHome(),
),
);
}
На втором экране по центру появится 'abcde' из RouteSettings.arguments.
Пример
Давайте выведем name маршрута:
import 'package:flutter/material.dart';
void main()
{
const settings = RouteSettings(name: '/home');
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: Text(settings.name ?? '12345'),
),
),
),
);
}
На экране по центру строка '/home'.
Смотрите также
-
класс
MaterialPageRoute,
принимает settings в конструкторе -
метод
pushNamed,
ищетRouteпо name -
метод
ModalRoute.of,
даёт settings текущего маршрута -
класс
Route,
владелецRouteSettings