LoginSignup
4
0

More than 1 year has passed since last update.

[Flutter] 今のコードをちょっと良くする(プライベート変数編)

Last updated at Posted at 2022-11-25

flutter-logo-sharing.png

こんにちわ いせきです。主はポケモンを楽しみながらFlutterを書いています。

では、初めていきましょう。

今回は「今のコードをちょっと良くする」をテーマにしてみようと思います。すでにご存じの方はここで終わりにしても構いません。

ではやっていきましょう。

あなたのコードの中で変数を使ったりしないでしょうか?その時に今のコードをちょっと良くする技が隠されています。

それは、プライベート変数です。

プライベート変数とは

変数名の前に_をつけることでプライベート関数になります。これを使うタイミングとしては、その変数が今のファイルのみで使用する場合に使います。
これを使うことで、他のファイルで使おうとするとエラーが出ます。そのため、別のファイルの干渉を防ぐ効果があります。
便利ですね。

どんな時に使うといいの?

はじめにコードの例を挙げます。どこを修正できるかわかりますか??
簡単なファイル構造です。

-lib
  - main.dart
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Qiita Flutter',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key}) : super(key: key);

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

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

  void incrementCounter() {
    setState(() {
      counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Qiita Flutter App')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

一見、普通にいいコードだと思いますが、色々指摘できる点があると思います。今回はプライベート変数に絞って行こうと思います。

わかりましたか?今回は2つ切り出してみました。では注目してみましょう。

  int counter = 0;
void incrementCounter() {
  setState(() {
    counter++;
  });
}

これらの変数とメソッドはmain.dartでしか使わないため、プライベートにできそうですね。変更の仕方はとても簡単です。変数の前に、アンダーバー(_)をつけるだけです。

int _counter = 0;

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

最後に

この小さな修正はとても大切になってきそうですね。多くのファイルを書いていると、このメソッドはたくさん使う、この変数はここでしか使わないようにするなど、様々あるとおもいます。ヒューマンエラーを防いでくれるプライベート関数はとてもありがたいと僕は思います。ぜひ使ってみてください。

駆け出しエンジニアの方へ、
これを知っておくだけで、ちょっといいねと言われると思います。共に頑張りましょう〜!

参考文献

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0