Skip to content

thanhhuan1990/base_bloc

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

base_bloc

Applying BLoC easier. Base on flutter_bloc. So you also install it.

Install

base_bloc:
    git:
      url: https://github.com/trgcuong/base_bloc.git
      ref: 0.0.2
import 'package:base_bloc/base_bloc.dart';

Example

class LoginWidget extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => LoginWidgetState();
}

class LoginWidgetState extends BaseBlocState<LoginWidget> {

  BuildContext _context;

  @override
  Widget build(BuildContext context) =>
      BaseBlocBuilder<LoginState>(bloc, _buildBody);

  @override
  BaseBloc createBloc() => LoginBloc();

  Widget _buildBody(BuildContext context, LoginState state) {
    return SafeArea(
        bottom: false, top: false,
        child: Scaffold(
          body: Builder(builder: (BuildContext context) {
            _context = context;
            return Container(
              child: Center(
                child: Text("Login Widget"),
              ),
            );
          }),
        )
    );
  }

}
@immutable
class LoginState extends BaseState {
  final error;
  final bool isLoading;

  LoginState({
    this.isLoading = false,
    this.error,
  });

  LoginState copyWith({
    bool isLoading,
    var error,
  }) =>
      LoginState(
        isLoading: isLoading ?? false,
        error: error,
      );
}
@immutable
class LoginEvent extends BaseEvent {}
class LoginBloc extends BaseBloc<LoginState> {

  @override
  LoginState get initialState => LoginState();

  @override
  Stream<LoginState> mapEventToState(BaseEvent event) async* {
    if (event is InitialEvent) {

      /// Implement InitialEvent

    } else if (event is ErrorEvent) {

      /// Implement ErrorEvent
      yield state.copyWith(error: event.error);
    }
  }
}

About

Use BLoC easier

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dart 100.0%