Skip to content

Instantly share code, notes, and snippets.

View marcguilera's full-sized avatar
👨‍💻

Marc Guilera marcguilera

👨‍💻
View GitHub Profile
@marcguilera
marcguilera / component_ref.dart
Created March 30, 2023 18:12
Flame + Riverpod
import 'dart:async';
import 'package:flame/components.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'component_scope.dart';
/// {@template component_ref}
/// Provides access to riverpod providers in the [Component] tree.
data class User (
name: String,
email: String
)
name: posts
description: A new Flutter project.
version: 1.0.0+1
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
http: ^0.12.0+1
dependencies_flutter: ^0.1.6
import 'package:flutter/material.dart';
import 'ui/post/post_list.dart';
import 'package:dependencies_flutter/dependencies_flutter.dart';
import 'package:dependencies/dependencies.dart';
import 'services/module.dart';
void main() => runApp(PostApp());
class PostApp extends StatelessWidget {
@override
import 'package:dependencies/dependencies.dart';
import 'package:flutter/material.dart';
import '../../services/post/models.dart';
import '../../services/post/service.dart';
import 'package:dependencies_flutter/dependencies_flutter.dart';
class PostList extends StatelessWidget with InjectorWidgetMixin {
@override
Widget buildWithInjector(BuildContext context, Injector injector) {
import "package:dependencies/dependencies.dart";
import "comment/service.dart";
import "post/service.dart";
import "user/service.dart";
class ServiceModule implements Module {
@override
void configure(Binder binder) {
binder
..bindSingleton("https://jsonplaceholder.typicode.com", name: "api_root")
import 'package:dependencies/dependencies.dart';
import 'models.dart';
import '../service.dart';
abstract class PostService implements Service<Post> {}
class PostRestService extends RestServiceBase<Post> implements PostService {
PostRestService(Injector injector) : super(injector, "posts");
@override
abstract class Service<M> {
Future<M> getOne(int id);
Future<List<M>> getAll();
}
abstract class RestServiceBase<M> implements Service<M> {
final Injector _injector;
final String _endpoint;
String get _root => "${_injector.get<String>(name: "api_root")}/$_endpoint";
class Car(private val wheel: Wheel) {
fun drive() {
wheel.spin()
}
}
class Car {
private val wheel = Wheel()
fun drive() {
wheel.spin()
}
}