質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

解決済

1回答

2531閲覧

Flutterで、 配列の中身をチェックしたいがエラーになる

Yariii

総合スコア61

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2020/10/07 16:13

編集2020/10/07 16:14

現在、以下のようなスタッフシフト表を作ろうと思っています。
今は全てバツ印がついてますが、APIの出勤可能日を照らし合わせて、バツの代わりに○を付けていきたいです。

イメージ説明

そのデータなのですが、今は仮で以下のようなデータ(直がき)を作っている状態です。
バックエンドについて全くの無知なのでこの書き方が正しいかわからないのですが、
availableに出勤可能日だけ格納しています。

_stuffItems = [ { 'name': '山本太郎', 'age': '22' + '歳', 'available': [ '2020-10-07 22:57:34.192023', '2020-10-10 22:57:34.192023', '2020-10-11 22:57:34.192023' ] } ];

そしてフロントコードが以下になります。

static DateTime _nowDate = DateTime.now(); var _weekName = [ '月', '火', '水', '木', '金', '土', '日', '月', '火', '水', '木', '金', '土', '日', ]; List<Widget> weekList() { List<Widget> weekList = List(); for (int i = 0; i < 7; i++) { final indexDay = _nowDate.add(Duration(days: i)); int _nowWeekday = indexDay.weekday - 1; final indexWeek = _weekName[_nowWeekday]; print(_stuffItems['available'][0]); weekList.add(Expanded( flex: 1, child: Column( children: [ Text( "$indexWeek", textAlign: TextAlign.center, ), Text( "${indexDay.day}", textAlign: TextAlign.center, ), //ここでデータとindexDayを照らし合わせて分岐させたいです _stuffItems['available'].contains(indexDay) == true ? Container( width: 10.0, child: Text('○'), ) : Container( width: 10.0, child: Text('×'), ) ], ))); } return weekList; }

そしてここで出るエラーが以下のようなものです。

he method 'contains' was called on null.

Receiver: null
Tried calling: contains(Instance of 'DateTime')

コードの途中で
print(_stuffItems['available'][0]);
を実行してみているのですが、
予想は2020-10-07 22:57:34.192023が返ってくるかと思ってたのが
nullが帰ってきているので、データの書き方がおかしいのかな?と思っていますが、
どう書き直していいのか調べても分からず質問に至りました...

The method '[]' was called on null.

Receiver: null
Tried calling:

この場合の解決策を教えていただけると、幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

arrayの中にオブジェクトがあるので、

print(_stuffItems['available'][0]);ではなく
print(_stuffItems[0]['available']);じゃないですか?

_stuffItems = [ // array { // object 'name': '山本太郎', 'age': '22' + '歳', 'available': [ '2020-10-07 22:57:34.192023', '2020-10-10 22:57:34.192023', '2020-10-11 22:57:34.192023' ] } ];

コードの途中で

print(_stuffItems['available'][0]);
を実行してみているのですが、
予想は2020-10-07 22:57:34.192023が返ってくるかと思ってたのが
nullが帰ってきているので、データの書き方がおかしいのかな?と思っていますが、
どう書き直していいのか調べても分からず質問に至りました...

投稿2020/10/07 16:44

hiyashikyuri

総合スコア388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yariii

2020/10/08 03:42

そういうことでしたか、、ありがとうございます! List型にしたらうまくいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問