動的Widget - 1m-llc/Flutter-KtoK GitHub Wiki
完成形
構成
ソースコード
main.dart
import 'package:flutter/material.dart';
// StatefulAppを実行
void main() => runApp(StatefulApp());
// StatelessAppクラス
class StatefulApp extends StatelessWidget {
// 現在時刻を初期設定する
final String now = DateTime.now().toString();
// Widgetをビルドする
@override
Widget build(BuildContext context) {
return MaterialApp( // マテリアルアプリ
title: 'Flutter-KtoK', // タイトル
home: StatefulPage(now: this.now), // StatefulPageクラス
);
}
}
// StatefulPageクラス
class StatefulPage extends StatefulWidget {
// 現在時刻
final String now;
StatefulPage({this.now}): super();
@override
_StatefulPageState createState() => new _StatefulPageState();
}
// _StatefulPageStateクラス
class _StatefulPageState extends State<StatefulPage> {
// 現在時刻を保存する変数
String _now = DateTime.now().toString();
// FloatingActionButtonが押された時に呼び出されて最新の時間が表示される
void _setNow() {
setState(() {
_now = DateTime.now().toString();
});
}
// Widgetのビルド
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Flutter-KtoK'),),
body: Text(_now, style: TextStyle(fontSize: 32.0),),
// _setNowで_setNow()メソッドを呼び出す
floatingActionButton: FloatingActionButton(onPressed: _setNow, child: Icon(Icons.refresh),),
);
}
}