スポンサーリンク

【Flutter】ボタンクリックで文字表示を行う手順ご紹介。

Flutter
スポンサーリンク

今回の記事はFlutterでボタンを表示させ、そのボタンをクリックすることでページ内に文字を出力する基本的なサンプルを作成するための手順をご紹介します。

私はFlutter初心者なので初心者用の記事になります。できるだけ簡単に書いていくので是非ご参照ください。

実行環境はAndroid Studioの4.0です。Flutterの環境構築に関してはこちらのリンクからご確認いただけると幸いです。

流れとしては「ボタンクリック 」→「Action起動」→「文字表示」になりますのでその挙動に沿って話を進めていきます。

では早速取り掛かっていきます。

スポンサーリンク

Flutterでボタンクリックを行う手順

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

void main() {
  runApp(new MaterialApp(home: new MyApp()));
}


class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('サンプル'),
      ),
      body: Center(
        child: RaisedButton(
          child: const Text('ボタン'),
          
        ),
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(

        child: Column(

          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Hello World',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

上記をbuildするとボタンの表示ができます。

ボタンをクリックしても何も処理は回りません。

初心者なりにわかったことをまとめておくと「main()」関数でおそらく関数を回している。その関数内に動的な処理を書く。

次にページレイアウトとして「MyHomePage」関連のクラスにextendで拡張させてレイアウトを追加しているという流れでしょう。

少しつかめてきましたね。では次にボタンにアクションを追加です。

Flutterでボタンクリック時にActionを行う手順

次に上記のコードの下記「ここに処理を書くという箇所にAction内容を設定します。」

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

void main() {
  runApp(new MaterialApp(home: new MyApp()));
}


class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('サンプル'),
      ),
      body: Center(
        child: RaisedButton(
          child: const Text('押したら終了'),
          onPressed: () {
            /////////////////
            //ここに処理を書く//
            /////////////////
            SystemNavigator.pop();
            //今回は例としてページを閉じるボタンを設定
          },
        ),
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(

        child: Column(

          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Hello World',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

上記をbuildするとボタンクリックでページが閉じます。

書き方がなんか枝構造,HTMLみたいな感じで少しWebページを作成する感覚に近いような感じがします。

Xcodeとは違いますね。

Flutterで文字を表示させる方法

最後にボタンクリック で文字を表示させてみましょう。

先ほどまでの状態だとボタンのみの表示になっていたので「Column」という構造(リスト表示のようなもの)を用いてページを作成していきます。「Column」の使い方に関してはこちらのリンクページからきになる方はご参照ください。

import 'package:flutter/material.dart';

var ok = false;

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

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _State();
  }
}

class _State extends State<MyApp> {

  int count = 0;
  String _message = 'Tap this button.';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('テスト中です。'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Container(
                child: Text(_message, style: TextStyle(fontSize: 50))
              ),
              Container(
                child: RaisedButton(
                  child: Text("button"),
                  onPressed: _onPressed
                )
              )

            ],
          ),
        ),
      ),
    );
  }

  void _onPressed() {
    setState(() {
      if (ok == false) {
        print("false");
        ok = true;
        _message = 'クリックされていない';
      } else {
        print("true");
        ok = false;
        _message = 'クリックした';
      }
    });
  }
}

少々中身を変更しております。
Columnを使ってリストのようにテキストを上に表示させてボタンをその下に設置させております。

ボタンをクリックすると交互にクリックされたかされていないかを表示可能になっております。

先ほどまでは機能が少なかったためtap関数をを直接ボタン内に記述していましたが少し助長になっていたので別に関数を作成しております。「setState()」関数がページ内のテキスト表示を変更する役割を持っている関数になります。是非抑えておきましょう。

今回の記事は以上です。初心者がまずとっかかりやしところから順番に記載しております。他にもFlutter記事を現在進行形でいくつか書いているのできになる方は是非ご参照ください。

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

Flutter
スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました