Skip to content

Instantly share code, notes, and snippets.

View ttlg's full-sized avatar
🤖
ChatGPT

Yota Ishikawa ttlg

🤖
ChatGPT
View GitHub Profile
@ttlg
ttlg / todo_providers.dart
Created September 5, 2020 06:32
sort order
enum SortOrder {
ASC,
DESC,
}
final _sortOrder = StateProvider.autoDispose((ref) => SortOrder.ASC); 
@ttlg
ttlg / todo_providers.dart
Created September 5, 2020 06:31
sorted todos
final sortedTodos = StateProvider<List<Todo>>((ProviderReference ref) {
final List<Todo> todos = ref.watch(_todos).state;
final SortOrder sortOrder = ref.watch(_sortOrder).state;
if (sortOrder == SortOrder.ASC) {
todos?.sort((a, b) => a.timestamp.compareTo(b.timestamp));
} else {
todos?.sort((a, b) => b.timestamp.compareTo(a.timestamp));
}
return todos;
@ttlg
ttlg / todo_repository.dart
Created September 5, 2020 06:28
todo_repository
import 'package:architect_test/client/shared_preferences_client.dart';
import 'package:architect_test/entity/todo.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
final todoRepository =
Provider.autoDispose<TodoRepository>((ref) => TodoRepositoryImpl(ref.read));
abstract class TodoRepository {
Future<List<Todo>> getTodos();
Future<void> saveTodos(List<Todo> todos);
@ttlg
ttlg / todo.dart
Created September 5, 2020 06:27
todo
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:flutter/foundation.dart';
part 'todo.freezed.dart';
part 'todo.g.dart';
@freezed
abstract class Todo with _$Todo {
const factory Todo(
String content, bool done, DateTime timestamp, String uid) = _Todo;
@ttlg
ttlg / shared_preferences_client.dart
Last active July 21, 2021 16:40
SharedPreferencesClient
import 'dart:convert';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
final sharedPreferencesClient = Provider((ref) => SharedPreferencesClient());
class SharedPreferencesClient {
Future<List<Map<String, dynamic>>> getJsonList(String key) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();