Closed11
[Flutter] Today I Learned
InkWellとは Material designのタップ可能領域用Widget
通知つける時に見たい
Futureの中でfor文を書きたいとき(Taskを複数同時に追加する場合)
Future<void> addTasks() async {
for (Menu menu in menus) {
await addTask(menu);
}
}
addTask() async {
await // do something
}
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();
}
}
freezedとenum
freezedを利用した際に、DateTimeとfirestoreのtimestampの組み合わせがうまくいかなかったがTimestampConverter
を作れば簡単に解決できた。
特定の日付から前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にクローズされました