動的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),),
    );
  }
}