Skip to content

Instantly share code, notes, and snippets.

View smokelaboratory's full-sized avatar
🎵

Sumeet Rukeja smokelaboratory

🎵
View GitHub Profile
@smokelaboratory
smokelaboratory / bottom_sheet.dart
Created July 28, 2019 14:56
Bottom Sheet widget
@override
Widget build(BuildContext context) {
var width = MediaQuery.of(context).size.width;
return WillPopScope(
onWillPop: onBackPressed,
child: GestureDetector(
onVerticalDragUpdate: _handleDragUpdate,
onVerticalDragEnd: _handleDragEnd,
child: Scaffold(
@smokelaboratory
smokelaboratory / sheet_gesture.dart
Created July 28, 2019 15:25
Bottom Sheet gesture
void _handleDragUpdate(DragUpdateDetails details) {
if (_dismissUnderway) return;
var change = details.primaryDelta / (_childHeight ?? details.primaryDelta);
if (_isDirectionTop())
_animationController.value += change;
else
_animationController.value -= change;
}
@smokelaboratory
smokelaboratory / animation_sheet.dart
Created July 28, 2019 15:36
Bottom Sheet animation
AnimatedBuilder(
animation: _animation,
builder: (context, _) {
return Transform(
transform: Matrix4.translationValues(
0.0, width * _animation.value, 0.0),
child: Container(
width: width,
child: GestureDetector(
behavior: HitTestBehavior.opaque,
class Observable<T> {
T _value;
Function(T) _onValueChanged;
void observe(Function(T) onValueChanged) {
this._onValueChanged = onValueChanged;
}
void setValue(T changedValue) {
if (changedValue != null) {
@smokelaboratory
smokelaboratory / api_connector.dart
Last active December 15, 2019 12:17
API connector
class ApiConnector {
Dio _dio;
String tag = "API call :";
CancelToken _cancelToken;
ApiConnector() {
_dio = createDio();
}
Dio createDio() {
@smokelaboratory
smokelaboratory / api_util.dart
Last active December 15, 2019 12:18
ApiUtil
class ApiUtil {
ApiConnector _apiConnector;
ApiUtil() {
_apiConnector = ApiConnector();
}
void cancelRequests({CancelToken cancelToken}) {
_apiConnector.cancelRequests(cancelToken: cancelToken);
}
@smokelaboratory
smokelaboratory / base_repo.dart
Last active December 15, 2019 12:17
BaseRepo
class BaseRepo {
final ApiUtil apiService = GetIt.I<ApiUtil>();
dynamic callApi(
Future<dynamic> Function() apiBlock, Observable<ApiError> onApiError,
{int reqCode = -1}) async {
return await apiBlock().catchError((error) {
onApiError.setValue(ApiError(error, reqCode));
return null;
});
@smokelaboratory
smokelaboratory / base_model.dart
Last active December 15, 2019 12:16
BaseModel
class BaseModel {
Observable<ApiError> onApiError = Observable();
}
abstract class BaseScreen extends StatefulWidget {}
abstract class BaseScreenState<T extends BaseScreen> extends State<T> {
ApiUtil apiService = GetIt.I<ApiUtil>();
Observable<ApiError> onApiError();
@override
void initState() {
super.initState();
class Home extends BaseScreen {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends BaseScreenState<Home> {
HomeModel model;
String text = "";