Skip to content

Instantly share code, notes, and snippets.

View FlutterWiz's full-sized avatar
🎯
Discipline

FlutterWiz FlutterWiz

🎯
Discipline
View GitHub Profile
class ApiService {
Future<List> getCharactersDatas() async {
final response = await Dio().get(
"https://rickandmortyapi.com/api/character",
);
return response.data["results"];
}
}
dependencies:
flutter:
sdk: flutter
flutter_riverpod: ^1.0.4
freezed_annotation: ^2.0.3
sizer: ^2.0.15
dio: ^4.0.6
cached_network_image: ^3.2.1
cupertino_icons: ^1.0.2
onPressed: () {
ref.read(todoNotifierProvider.notifier).mapEventsToStates(
TodoTitleChanged(text: textfieldController.value.text),
);
ref.read(todoNotifierProvider.notifier).mapEventsToStates(
const AddTodo(),
);
textfieldController.clear();
},
@override
Widget build(BuildContext context, WidgetRef ref) {
final todoList = ref.watch(todoNotifierProvider.select((state) => state.todoList));
final reversedTodoList = List<TodoModel>.from(todoList.reversed);
.
.
.
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:todo_list_riverpod/domain/todo_model.dart';
import 'package:todo_list_riverpod/presentation/pages/home_page/constants/texts.dart';
import 'package:todo_list_riverpod/presentation/pages/home_page/widgets/todos_action_part.dart';
import 'package:todo_list_riverpod/presentation/pages/home_page/widgets/todos_part.dart';
import 'package:todo_list_riverpod/providers/todo_provider.dart';
class HomePage extends ConsumerWidget {
const HomePage({Key? key}) : super(key: key);
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:sizer/sizer.dart';
import 'package:todo_list_riverpod/presentation/pages/home_page/home_page.dart';
class AppWidget extends StatelessWidget {
const AppWidget({Key? key}) : super(key: key);
@override
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:todo_list_riverpod/presentation/core/app_widget.dart';
void main() {
runApp(
const ProviderScope(
child: AppWidget(),
),
);
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:todo_list_riverpod/application/todo/todo_notifier.dart';
import 'package:todo_list_riverpod/application/todo/todo_state.dart';
final todoNotifierProvider = StateNotifierProvider<TodoNotifier, TodoState>(
(ref) {
return TodoNotifier();
},
);
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:todo_list_riverpod/application/todo/todo_event.dart';
import 'package:todo_list_riverpod/application/todo/todo_state.dart';
import 'package:todo_list_riverpod/domain/todo_model.dart';
import 'package:uuid/uuid.dart';
class TodoNotifier extends StateNotifier<TodoState> {
TodoNotifier() : super(TodoState.empty());
final uuid = const Uuid();
import 'package:freezed_annotation/freezed_annotation.dart';
part 'todo_event.freezed.dart';
@freezed
class TodoEvent with _$TodoEvent {
const factory TodoEvent.todoTitleChanged({required String text}) = TodoTitleChanged;
const factory TodoEvent.todoStatusChanged({required String todoId}) = TodoStatusChanged;
const factory TodoEvent.addTodo() = AddTodo;
const factory TodoEvent.removeTodo({required String todoId}) = RemoveTodo;