Skip to content

Instantly share code, notes, and snippets.

View mono0926's full-sized avatar
🐶
( ´・‿・`)

mono — Masayuki Ono mono0926

🐶
( ´・‿・`)
View GitHub Profile
@mono0926
mono0926 / main.dart
Last active February 20, 2023 03:04
import 'package:flutter/material.dart';
void main() {
runApp(const App());
}
class App extends StatelessWidget {
const App({super.key});
@override
@mono0926
mono0926 / main.dart
Last active February 3, 2023 08:44
Flex VS Row/Column
import 'package:flutter/material.dart';
void main() => runApp(const App());
class App extends StatelessWidget {
const App({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
import 'dart:async';
import 'package:flutter_test/flutter_test.dart';
import 'package:rxdart/rxdart.dart';
void main() {
test('', () async {
// broadcast取ると、expectはtrueになる
// BehaviorSubjectでも、expectはtrueになる
final controller = StreamController<bool>.broadcast();
class PackageMetrics extends StateNotifier<AsyncValue<PackageMetricsScore>> {
PackageMetrics(this._ref, {required this.packageName})
: super(const AsyncLoading()) {
_ref
.watch(pubRepositoryProvider)
.getPackageMetrics(packageName: packageName)
.then((value) => state = AsyncData(value));
}
final AutoDisposeRef _ref;
class PackageMetrics
// AutoDispose/Family版のAsyncNotifier
extends AutoDisposeFamilyAsyncNotifier<PackageMetricsScore, String> {
late String _packageName;
@override
Future<PackageMetricsScore> build(String arg) {
_packageName = arg;
return ref
.watch(pubRepositoryProvider)
.getPackageMetrics(packageName: _packageName);
@mono0926
mono0926 / main.dart
Last active December 11, 2022 03:00
Responsive Navigation
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
void main() {
runApp(
const ProviderScope(
child: App(),
),
);
@mono0926
mono0926 / main.dart
Last active September 30, 2022 05:01
import 'package:quiver/collection.dart';
void main() {
// maximumSizeのデフォルトは100
final cache = LruMap<String, int>(maximumSize: 3);
cache['a'] = 1;
print(cache['a']); // 1
cache['b'] = 2;
print(cache['a']); // 1
- json['foo'] as Map<String, dynamic>),
+ Map<String, dynamic>.from(json['foo'] as Map)),
// ignore_for_file: omit_local_variable_types, prefer_final_locals, equal_elements_in_set
import 'dart:collection';
void main() {
// Setのデフォルト実装は、順番が保たれる LinkedHashSet
Set<String> animals = {'dog', 'dog', 'cat'};
// 常に[dog, cat]
print(animals.toList());
Set<String> animals2 = HashSet.of(['dog', 'dog', 'cat']);
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
void main() {
final crashlytics = FirebaseCrashlytics.instance;
// いずれも未キャッチ例外なので `fatal: true`(ネイティブのクラッシュと同等の扱い)が適切
// (例外処理であまり想定してないException受け取った時などは `fatal: false` でも良い感)
// オリジナルの`FlutterError.presentError`は呼ばずともログは充分そう
FlutterError.onError = crashlytics.recordFlutterFatalError;