MENU

MENU

カテゴリー

\気になるカテゴリーをクリック!/

やきいも
文系SE
【プロフ】
 ▶ 30代半ば
 ▶ ITエンジニア13年目 | 業務システム
 ▶ 妻と息子の3人で田舎の暮らし

【サイト運営】
このブログは私の体験をもとに以下に関する情報をお届けしています。
 ▶ AI
 ▶ Java
 ▶ Flutterなど
Udemyセール!最大95%オフ!1,200円~11月の最新セール情報をみる

【Flutter】Stateless Widget・Stateful Widget違いを3分で解説!(サンプルコードあり)

この記事にはPRを含む場合があります。

FlutterでStateless Widget、Stateful Widgetがよく分からない

ということで悩んでませんか?
そこで、今回はFlutterのStateless WidgetStateful Widgetについてサンプルコードデモ動画で解説します。

この記事で分かること!
  • Stateless WidgetとStateful Widget違い

フリーランスのFlutterエンジニアとして働きたい方にオススメのエージェントはこちらで詳しく解説しています。

目次

Stateless Widgetとは

Stateless Widgetとは、状態(state)を持たないWidgetです。そのため、画面上の値を変更したくても、画面は再描画されません。

A widget that does not require mutable state.

(直訳)可変状態を必要としないウィジェット。

引用:Flutter公式サイト「Stateless Widget Class」

Stateless Widget のデモ動画

デモ動画の通りフローティングアクションボタンをクリックするとConsoleに数字が出力されます。乱数で0か1を出力する仕様です。コンソール上は数値は変わってますが、画面上のAPPBARでは数字は0のままとなり画面は再描画されません。

Stateless Widget のサンプルコード

Stateless Widgetのサンプルコードは以下の通りです。そのままコピペで使えます。

StatelessWidgetクラスを継承したState Demoクラスを作成します。継承することで、Stateless Widgetのメソッドやフィールドにアクセスできます。オーバーライドする事で、クラス継承時に親クラスのメソッドと同じ名前のメソッドを子クラスで定義し直し、親クラスのメソッドではなく子クラスのメソッドが呼ばれます。

import 'package:flutter/material.dart';
import 'dart:math';

void main() => runApp(StatelessDemo());

class StatelessDemo extends StatelessWidget {
  int chkNumber = 0;
  Random rdmNumber = new Random();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('数字は ' + (chkNumber == 1 ? '1' : '0')),
        ),
        floatingActionButton: FloatingActionButton(
          child: Icon(Icons.numbers_rounded),
          onPressed: () {
            chkNumber = rdmNumber.nextInt(2);
            print(chkNumber);
          },
        ),
      ),
    );
  }
}

Stateless Widgetの主なメソッド

メソッド名内容
build method画面を描画する

Stateful Widgetとは

Stateful Widgetとは、状態(state)を持つWidgetです。そのため、画面上の値を変更したい場合に画面を再描画できます。

A widget that has mutable state.

引用:Flutter公式サイト「Stateful Widget Class」

Stateful Widget のデモ動画

デモ動画の通りフローティングアクションボタンをクリックするとConsoleに数字が出力されます。乱数で0か1を出力する仕様です。コンソール上は数値は変わり、画面上も数字は変わります。

ちなみにコンソールでは初期処理が出力されてます。これはinitStateのメソッドを利用しているため、初めの処理時のみ動くStateのメソッドになります。

Stateful Widget のサンプルコード

Stateful Widgetのサンプルコードは以下の通りです。コピペでそのまま動きます。

import 'package:flutter/material.dart';
import 'dart:math';

void main() => runApp(MyHomePage());

class MyHomePage extends StatefulWidget {
  @override
  State<MyHomePage> createState() => _StatefulDemo();
}

class _StatefulDemo extends State<MyHomePage> {
  int chkNumber = 0;
  Random rdmNumber = new Random();

  @override
  void initState() {
    print("初期処理");
     super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('数字は ' + (chkNumber == 1 ? '1' : '0')),
        ),
        floatingActionButton: FloatingActionButton(
          child: Icon(Icons.attach_money),
          onPressed: () {
            setState(() {
              chkNumber = rdmNumber.nextInt(2);
            });
            print(chkNumber);
          },
        ),
      ),
    );
  }
}
 

Stateful Widgetの主なメソッド

Stateful Widgetの主なメソッドは以下の通りです。

メソッド名内容
createState methodウィジェットツリー内の特定の場所で、変更可能な状態を作成します。
initState methodWidgetの初期化時に一度だけ呼ばれるメソッドです。
setState method指定した状態(State)を更新させる処理です。

まとめ:Stateless Widget・Stateful Widgetの違いは静的か動的

今回の記事では、Stateless WidgetとStateful Widgetについてサンプルコードとデモ動画解説しました。

ポイント!
  • Stateless Widgetは状態(state)を持たないWidgetです。
  • Stateful Widgetは状態(state)を持つWidgetです。


Flutterエンジニアになるには?

初心者が中級者レベルのFlutterエンジニアなるまでの進め方をまとめました。

Flutterの学習方法を知る

Flutter をスクールで学ぶ

Flutterの副業を探す

おまけFlutter入門の完全ガイド

Flutter/Dartの基礎一覧

Flutter/Dartの入門知識として押さえておきたい内容をまとめました。学習のご参考にどうぞ。

Widget(ウィジェット) 一覧

Dart 基本文法

ライブラリ 使い方

コメント

コメントする

CAPTCHA


目次