Skip to content

源码:labs/flutter/host/lib/topics/state_routing_architecture/flutter_routing_basic/routing_home_page.dart ​

  • 原始路径:labs/flutter/host/lib/topics/state_routing_architecture/flutter_routing_basic/routing_home_page.dart
  • 类型:dart
dart
import 'package:flutter/material.dart';

import '../../../l10n/l10n.dart';

class RoutingHomePage extends StatefulWidget {
  const RoutingHomePage({super.key});

  static const routeName = '/routing-basic';
  static const detailRouteName = '/routing-basic/detail';

  @override
  State<RoutingHomePage> createState() => _RoutingHomePageState();
}

class _RoutingHomePageState extends State<RoutingHomePage> {
  String _lastResult = '';

  Future<void> _openDetail() async {
    final result = await Navigator.of(context).pushNamed(
      RoutingHomePage.detailRouteName,
      arguments: RoutingDetailArgs(id: 42, title: context.l10n.routingDetailArgsTitle),
    );

    if (!mounted) return;
    setState(() {
      _lastResult = '$result';
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(context.l10n.routingAppBarTitle)),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            ElevatedButton(
              onPressed: _openDetail,
              child: Text(context.l10n.routingBtnOpenDetail),
            ),
            const SizedBox(height: 16),
            Text(
              _lastResult.isEmpty
                  ? context.l10n.routingNoResult
                  : context.l10n.routingLastPopResult(_lastResult),
            ),
          ],
        ),
      ),
    );
  }
}

class RoutingDetailArgs {
  const RoutingDetailArgs({required this.id, required this.title});

  final int id;
  final String title;
}

站点构建时间:2026/8/24 23:43:17