flutter · July 25, 2021

Live Template Roadmap Flutter BLoC

  • Json Live template

json_bloc_road_map

import 'package:equatable/equatable.dart';
import 'package:json_annotation/json_annotation.dart';

part '$FileName$.g.dart';

@JsonSerializable()
class $NameClass$ extends Equatable{

  @JsonKey(name: '$Id$')
  final $TypeField$ $Id$;

  $NameClass$(this.$Id$);

  @override
  List<Object?> get props => [
    $Id$
  ];

  factory $NameClass$.fromJson(Map<String, dynamic> json) =>
      _$$$NameClass$FromJson(json);

  Map<String, dynamic> toJson() => _$$$NameClass$ToJson(this);

}

json_field_bloc_road_map

@JsonKey(name: '$Key$')
  final $TypeKey$ $Key$;

retrofit_bloc_road_map

import 'package:dio/dio.dart';
import 'package:retrofit/retrofit.dart';

part '$file_name$.g.dart';

@RestApi(baseUrl : "$BaseURL$")
abstract class $Class$Service {
  factory $Class$Service(Dio dio, {String baseUrl}) = _$Class$Service;

  @GET("$GET$")
  Future<$CLASSRESPONSE$> $funtionResponse$();

}
  • Retrofit live template

retrofit_client_bloc_road_map

import 'package:dio/dio.dart';

class $Class$Client {
  late Dio _dio;
  late $ClassService$ _service;

  $Class$Client() {
    _dio = Dio();
    _dio.interceptors.add(LogInterceptor(requestBody: true, responseBody: true));
    _service = $ClassService$(_dio);
  }

  $ClassService$ getService() {
    return _service;
  }

}
  • Repository Live template

repository_bloc_road_map

abstract class $Class$Repository {

  Future<$Response$>? $functionResponse$($Query$);

}

repository_impl_bloc_road_map

class $Class$Impl extends $ClassExtends$ {

  late $ClassService$ _service;

  $Class$Impl() {
    _service = $ClassService$Client().getService();
  }

}

state_bloc_default_road_map

import 'package:equatable/equatable.dart';

abstract class $Class$State extends Equatable {
  const $Class$State();

  @override
  List<Object> get props => [];
}

class Initial$Class$State extends $Class$State {}

class Loading$Class$State extends $Class$State {}


class Error$Class$State extends $Class$State {
  final String errorMessage;

  const Error$Class$State({this.errorMessage = "Unknown Error"});
  @override
  String toString() =>
      'Error : $errorMessage';
}

class Success$Class$State extends $Class$State {

  const Success$Class$State();
}

event_bloc_default_road_map

import 'package:equatable/equatable.dart';

abstract class $Class$Event extends Equatable {

  @override
  List<Object> get props => [];

}

class $ClassEvent$Event extends $Class$Event {
 
  $ClassEvent$Event();

}

bloc_default_road_map

import 'package:flutter_bloc/flutter_bloc.dart';

class $Class$Bloc
    extends Bloc<$ClassEVENT$, $ClassState$> {
    
  final $ClassRepository$ repository;

  $Class$Bloc({required this.repository})
      : super(Initial$Class$State());

  @override
  Stream<$ClassState$> mapEventToState($ClassEVENT$ event) async* {
    if (event is $EventClass$) {
      try {
      
        yield Loading$Class$State();
        
        $ClassResponse$ response = await repository.$method$;

        yield Success$Class$State();
        
      } catch (e) {
        yield Error$Class$State(errorMessage: e.toString());
      }
    }
  }
}

app_bloc_default_road_map

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

class $Class$ extends StatelessWidget {

    const $Class$({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MultiBlocProvider(
      providers: [
        BlocProvider(
          create: (context) => $ClassBloc$,
        ),
      ],
      child: MaterialApp(
        debugShowCheckedModeBanner: false,
        title: 'Example',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: const Container(),
      ),
    );
  }
}

routes

class Routes {
  Routes._();

  static const String home = '/';

}