🎂

Flutterで誕生日から年齢を算出するときのメモ

2020/12/10に公開

この記事の内容

現在うさぎの体調管理アプリを開発中で、誕生日から現在の年齢を算出して表示させたかったのですが計算の仕方がわからなかったため自分用のメモとしてここに書いておくためのものです。
初学者の粋をまだ出れていないためまだまだ勉強不足のためツッコミどころ多いかもしれません。
そのため間違いとか修正点ございましたら、ご指摘いただけると幸いです!

入れたライブラリ

https://pub.dev/packages/intl#-installing-tab-

参考にしたサイト

https://qiita.com/aqril_1132/items/46e824541e657190ef3e

画面の動き

該当箇所のコード

modelとviewでファイルを分けてProviderをつかっております。

model
  String birthday;
  int age;
  
  
  ///日付選択
  Future<void> selectDate(BuildContext context) async {
    final DateTime selected = await showDatePicker(
      context: context,
      locale: const Locale('ja'),
      initialDate: DateTime.now(),
      firstDate: DateTime(DateTime(2006).year),
      lastDate: DateTime.now(),
      builder: (BuildContext context, Widget widget) {
        return widget;
      },
    );
    final selectedBirthDay = selected;
    final today = DateTime.now();

    if (selected != null) {
      ///今日の日付から選択した誕生日の年数のみ引く
      this.age = today.year - selectedBirthDay.year;
      this.birthday = (DateFormat.yMMMd('ja')).format(selected);
    }
    notifyListeners();
  }


    body: Consumer<AddRabbitModel>(
      builder: (context, model, child) {
        return SingleChildScrollView(
          child: Stack(
            children: [
           ----省略----
                      SizedBox(
                        width: double.infinity,
                        child: FlatButton(
                          onPressed: () async {
                            await model.selectDate(context);
                          },
                          child: Row(
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: [
                              FaIcon(FontAwesomeIcons.calendarAlt),
                              Padding(
                                padding: const EdgeInsets.all(8.0),
                                child: model.birthday != null
                                    ? Text(
                                        '誕生日${model.birthday}: 年齢${model.age}歳')
                                    : Text('タップして誕生日を選択'),
                              ),
                            ],
                          ),
                        ),
                      ),
		           ----省略----

あとがき

今回は、Flutterで誕生日から年齢を算出のときの計算の仕方をやりました。
また勉強になったことをアウトプットがてら発信できるように勉強頑張ります。

Discussion