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_test.dart
Last active September 5, 2020 07:14
todo providers test
import 'package:architect_test/entity/todo.dart';
import 'package:architect_test/provider/todo_providers.dart';
import 'package:architect_test/repository/todo_repository.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
class _TodoRepositoryImplDummy implements TodoRepository {
List<Todo> inMemoryTodoList = [];
@ttlg
ttlg / InifinityScrollSample.dart
Last active December 25, 2020 06:35
InifinityScrollSample
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
void main() async {
runApp(ProviderScope(child: InifinityScrollSample()));
}
final itemsProvider = StateProvider<List<String>>((ref) => null);
final itemController =
class Todo {
final String content;
final bool done;
final DateTime timestamp;
final String id;
//<editor-fold desc="Data Methods">
Todo({
required this.content,
import 'dart:convert';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:todo_riverpod/entity/todo.dart';
final todoRepository =
Provider.autoDispose<TodoRepository>((ref) => TodoRepositoryImpl(ref.read));
abstract class TodoRepository {
final _todoListState = StateProvider<List<Todo>?>((ref) => null);
enum SortOrder {
ASC,
DESC,
}
final _sortOrderState = StateProvider<SortOrder>((ref) => SortOrder.ASC);
final sortedTodoListState = StateProvider<List<Todo>?>((ref) {
final List<Todo>? todoList = ref.watch(_todoListState);
if (ref.watch(_sortOrderState) == SortOrder.ASC) {
todoList?.sort((a, b) => a.timestamp.compareTo(b.timestamp));
} else {
todoList?.sort((a, b) => b.timestamp.compareTo(a.timestamp));
}
return todoList;
});
final todoViewController =
Provider.autoDispose((ref) => TodoViewController(ref.read));
class TodoViewController {
final Reader _read;
TodoViewController(this._read);
Future<void> initState() async {
_read(_todoListState.notifier).state =
await _read(todoRepository).getTodoList();
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:todo_riverpod/entity/todo.dart';
import 'package:todo_riverpod/provider/todo_providers.dart';
class TodoTile extends HookConsumerWidget {
final Todo todo;
const TodoTile({required this.todo});
useEffect(() {
ref.read(todoViewController).initState();
return ref.read(todoViewController).dispose;
}, []);