Skip to content

Instantly share code, notes, and snippets.

View felangel's full-sized avatar
coding

Felix Angelov felangel

coding
View GitHub Profile
@felangel
felangel / github_user.dart
Created January 21, 2019 20:18
[github_search] Github User Model
class GithubUser {
final String login;
final String avatarUrl;
const GithubUser({this.login, this.avatarUrl});
static GithubUser fromJson(dynamic json) {
return GithubUser(
login: json['login'] as String,
avatarUrl: json['avatar_url'] as String,
@felangel
felangel / search_result_error.dart
Created January 21, 2019 20:19
[github_search] Search Result Error Model
class SearchResultError {
final String message;
const SearchResultError({this.message});
static SearchResultError fromJson(dynamic json) {
return SearchResultError(
message: json['message'] as String,
);
}
@felangel
felangel / github_cache.dart
Created January 21, 2019 20:20
[github_search] Github Cache
import 'package:common_github_search/common_github_search.dart';
class GithubCache {
final _cache = <String, SearchResult>{};
SearchResult get(String term) => _cache[term];
void set(String term, SearchResult result) => _cache[term] = result;
bool contains(String term) => _cache.containsKey(term);
@felangel
felangel / github_repository.dart
Created January 21, 2019 20:22
[github_search] Github Repository
import 'dart:async';
import 'package:common_github_search/common_github_search.dart';
class GithubRepository {
final GithubCache cache;
final GithubClient client;
GithubRepository(this.cache, this.client);
@felangel
felangel / github_search_event.dart
Created January 21, 2019 20:27
[github_search] Github Search Event
import 'package:equatable/equatable.dart';
abstract class GithubSearchEvent extends Equatable {
GithubSearchEvent([List props = const []]) : super(props);
}
class TextChanged extends GithubSearchEvent {
final String text;
TextChanged({this.text}) : super([text]);
@felangel
felangel / github_search_state.dart
Created January 21, 2019 20:29
[github_search] Github Search State
import 'package:equatable/equatable.dart';
import 'package:common_github_search/common_github_search.dart';
abstract class GithubSearchState extends Equatable {
GithubSearchState([List props = const []]) : super(props);
}
class SearchStateEmpty extends GithubSearchState {
@override
@felangel
felangel / github_search_bloc.dart
Created January 21, 2019 20:30
[github_search] Github Search Bloc
import 'dart:async';
import 'package:meta/meta.dart';
import 'package:rxdart/rxdart.dart';
import 'package:bloc/bloc.dart';
import 'package:common_github_search/common_github_search.dart';
class GithubSearchBloc extends Bloc<GithubSearchEvent, GithubSearchState> {
final GithubRepository githubRepository;
@felangel
felangel / pubspec.yaml
Created January 21, 2019 20:33
[github_search] Flutter Pubspec.yaml
name: flutter_github_search
description: A new Flutter project.
version: 1.0.0+1
environment:
sdk: ">=2.0.0-dev.68.0 <3.0.0"
dependencies:
flutter:
@felangel
felangel / search_form.dart
Created January 21, 2019 20:40
[github_search] Flutter Search Bar
// SearchForm Implementation
class _SearchBar extends StatefulWidget {
final GithubSearchBloc githubSearchBloc;
_SearchBar({Key key, this.githubSearchBloc}) : super(key: key);
@override
State<_SearchBar> createState() => _SearchBarState();
}
@felangel
felangel / search_form.dart
Created January 21, 2019 20:42
[github_search] Flutter Search Body
// _SearchBar Implementation
class _SearchBody extends StatelessWidget {
final GithubSearchBloc githubSearchBloc;
const _SearchBody({Key key, this.githubSearchBloc}) : super(key: key);
@override
Widget build(BuildContext context) {
return BlocBuilder<GithubSearchEvent, GithubSearchState>(