前回の記事の続きです。
今回は、画面遷移等の制御周りの知識を深めていきましょう。
※ 用例で比較説明したほうがわかりよいため、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開発観点の詳細に触れてみたいと思います。