前回の記事の続きです。
今回は、画面遷移等の制御周りの知識を深めていきましょう。
※ 用例で比較説明したほうがわかりよいため、SwiftUIの用例で比較したいため、SwiftUIで開発したことがあることが前提の記事です
環境
 ・MacOS Ventura 13.6.3
 ・Xcode 15.1
 ・VSCode 1.85.1
 ・Flutter 3.16.5
 ・Dart 3.2.3


前回の記事の続きです。
今回は、画面遷移等の制御周りの知識を深めていきましょう。
※ 用例で比較説明したほうがわかりよいため、SwiftUIの用例で比較したいため、SwiftUIで開発したことがあることが前提の記事です
 ・MacOS Ventura 13.6.3
 ・Xcode 15.1
 ・VSCode 1.85.1
 ・Flutter 3.16.5
 ・Dart 3.2.3

// Flutterのコード
// インポートとか省略
// MyAppは、mainで生成されています。
class MyApp extends StatelessWidget {
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return CupertinoApp(
      // debugShowCheckedModeBanner: false, // false:デバッグバナーをつけない
      home: const HomePage(),
      routes: {
        '/details' : (context) => const DetailsPage(),
      },
    );
  }
}// Flutterのコード
// インポートとか省略
// Personクラス、 mockPersonsデータは、前回と同じ内容です。
class HomePage extends StatelessWidget {
  const HomePage({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return CupertinoPageScaffold(
      navigationBar: const CupertinoNavigationBar(
        middle: Text(
          'Pick a person',  // タイトル
        ),
      ),
      child: Material(
        child: ListView.builder(
          itemCount: mockPersons.length,
          itemBuilder: (context, index) {
       &nbs
// Flutterのコード
// インポートとか省略
// MyAppは、前回と同じ。
// また、変更箇所辺りの抜粋
class HomePage extends StatelessWidget {
  ...
  @override
  Widget build(BuildContext context) {
    return CupertinoPageScaffold(
      ...
      child: Material(
        child: ListView.builder(
            ...
            return ListTile(
              ...
              onTap: () {
                // ここ修正
                Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) => DetailsDialogPage(
                        person: person,
                      ),
    &nbs// Flutterのコード
// インポートとか省略
class HomePage extends StatefulWidget {
  const HomePage({super.key});
  @override
  State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
  int _counter = 0;
  
  @override
  Widget build(BuildContext context) {
     return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('$_counter'),
            CupertinoButton(
              onPressed: () {
                setState(() {
                  _counter++;
                });
              },
              child: const Text('+'),
            ),
          ],
        ),
      ),
    );
  }
}今回は、画面遷移等の制御周りを中心に、SwiftUIのコード例と見比べて理解を深めるのを目的に記事を書きました。
次回も、同様にFlutter開発観点の詳細に触れてみたいと思います。