自分だけのWidgetクラス
CoddyのFlutterジャーニー「アプリをインタラクティブにする」セクションの一部。レッスン 9/34。
これまでに使ったウィジェット、Text、Row、Scaffoldは、どれも誰かが書いたクラスです。自分でクラスを書くこともできます。すでにひとつあります。MyAppです。
ここから先、アプリには2つのクラスがあります。MyAppはMaterialAppを使ってアプリをセットアップし、画面には独自のクラスHomePageを用意します。
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(child: Text('Hi')),
);
}
}extends StatelessWidgetによって、HomePageはウィジェットになります。const HomePage({super.key});の行があることで、HomePage()と書けます。クラス名を自分のクラス名にして、そのままコピーしてください。buildはウィジェットに表示するものを返します。
ほかのウィジェットと同じように使います。home: HomePage()とします。画面を独自のクラスにすると読みやすくなります。また、次のレッスンでは、アプリの周りの部分はそのままに、画面を変更できるようになります。
チャレンジ
簡単HomePage クラスはファイルの末尾に書かれていますが、アプリにはまだ古い Coming soon 画面が表示されています。
HomePageのScaffoldに、タイトルがNotesのAppBarを追加してください。MyAppにそれを表示させるには、home:の後にあるScaffold全体をHomePage()に置き換えてください。
自分で試してみよう
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(child: Text('Coming soon')),
),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(child: Text('No notes yet')),
);
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
アプリをインタラクティブにするのすべてのレッスン
自分で練習してみよう: Flutterオンラインコンパイラ