This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 = []; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 = |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Todo { | |
final String content; | |
final bool done; | |
final DateTime timestamp; | |
final String id; | |
//<editor-fold desc="Data Methods"> | |
Todo({ | |
required this.content, |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
final _todoListState = StateProvider<List<Todo>?>((ref) => null); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
enum SortOrder { | |
ASC, | |
DESC, | |
} | |
final _sortOrderState = StateProvider<SortOrder>((ref) => SortOrder.ASC); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
useEffect(() { | |
ref.read(todoViewController).initState(); | |
return ref.read(todoViewController).dispose; | |
}, []); | |