Closed11

[Flutter] Today I Learned

Fumiya YamanakaFumiya Yamanaka

Futureの中でfor文を書きたいとき(Taskを複数同時に追加する場合)

Future<void> addTasks() async {
  for (Menu menu in menus) {
     await addTask(menu);
  }
}

addTask() async {
  await // do something 
}

Fumiya YamanakaFumiya Yamanaka

firebaseの導入でFutureBuilderを利用しない場合
main関数を非同期にしてしまうと可読性が上がる

before

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(App());
}

class App extends StatelessWidget {

  final Future<FirebaseApp> _initialization = Firebase.initializeApp();

  
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: _initialization,
      builder: (context, snapshot) {
        if (snapshot.hasError) {
          return MaterialApp(home: Hoge());
        }

        if (snapshot.connectionState == ConnectionState.done) {
          return Root();
        }

        return Loading();
      },
    );
  }
}

after


Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(App());
}

class App extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Hoge();
  }
}
Fumiya YamanakaFumiya Yamanaka

特定の日付から前1週間の曜日配列を取得する

DartにはDateTimeクラスにweekdayプロパティ(1..7)があるのでそちらを利用する

final weekDays = ['', '月', '火', '水', '木', '金', '土', '日'];
print(weekDays[DateTime.now().weekday]); // 例: 月

下記の関数を用意して、

List<String> getWeekdays({List<String> weekDays = const ['月', '火', '水', '木', '金', '土', '日']}) {
	var results = List<String>.from(weekDays);
	final sublist = results.sublist(0, weekday);
	results.addAll(sublist);
	results.removeRange(0, weekday);
	return results;
}

今日が火曜日だとすると

print(DateTime.now().getWeekDays()); // 例: ['水', '木', '金', '土', '日', '月', '火']

が得られる。

このスクラップは2021/08/22にクローズされました