Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include: package:pedantic/analysis_options.1.9.0.yaml
2 changes: 1 addition & 1 deletion lib/core/base/model/base_error.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:fluttermvvmtemplate/core/init/network/IResponseModel.dart';
import '../../init/network/IResponseModel.dart';

class BaseError extends IErrorModel {
final String message;
Expand Down
2 changes: 1 addition & 1 deletion lib/core/components/button/icon_button.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class IconNormalButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return NormalButton(
onPressed: this.onPressed,
onPressed: onPressed,
child: Center(
child: Icon(icon),
),
Expand Down
2 changes: 1 addition & 1 deletion lib/core/components/button/normal_button.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class NormalButton extends StatelessWidget {
return RaisedButton(
padding: EdgeInsets.all(15),
elevation: 10,
onPressed: this.onPressed,
onPressed: onPressed,
child: child,
);
}
Expand Down
2 changes: 1 addition & 1 deletion lib/core/components/button/title_text_button.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class TitleTextButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return NormalButton(
onPressed: this.onPressed,
onPressed: onPressed,
child: Center(
child: Text(text),
),
Expand Down
2 changes: 1 addition & 1 deletion lib/core/components/card/not_found_navigation_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ class NotFoundNavigationWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Text("Not Found"),
body: Text('Not Found'),
);
}
}
2 changes: 1 addition & 1 deletion lib/core/components/column/form_column.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class FormColumn extends StatelessWidget {
Expanded(
flex: 8,
child: Column(
children: this.children,
children: children,
),
),
Spacer(flex: 1),
Expand Down
4 changes: 3 additions & 1 deletion lib/core/components/decoration/circle_decoration.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,16 @@ class _CirclePainter extends BoxPainter {
final Paint _paint;
final double radius;

Offset circleOffset;

_CirclePainter(Color color, this.radius)
: _paint = Paint()
..color = color
..isAntiAlias = true;

@override
void paint(Canvas canvas, Offset offset, ImageConfiguration cfg) {
final Offset circleOffset = offset + Offset(cfg.size.width / 2, cfg.size.height - radius - 5);
circleOffset = offset + Offset(cfg.size.width / 2, cfg.size.height - radius - 5);
canvas.drawCircle(circleOffset, radius, _paint);
}
}
10 changes: 5 additions & 5 deletions lib/core/constants/app/app_constants.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
class ApplicationConstants {
static const LANG_ASSET_PATH = "asset/lang";
static const IPAD_NAME = "IPAD";
static const FONT_FAMILY = "POPPINS";
static const COMPANY_NAME = "HWA";
static const LANG_ASSET_PATH = 'asset/lang';
static const IPAD_NAME = 'IPAD';
static const FONT_FAMILY = 'POPPINS';
static const COMPANY_NAME = 'HWA';

static const EMAIL_REGIEX = r"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}\$";
static const EMAIL_REGIEX = r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}\$';
}
11 changes: 4 additions & 7 deletions lib/core/constants/image/image_constatns.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
class ImageConstants {
static ImageConstants _instace;

static ImageConstants get instance {
if (_instace == null) _instace = ImageConstants._init();
return _instace;
}
static ImageConstants get instance => _instace ??= ImageConstants._init();

ImageConstants._init();

String get logo => toPng("veli");
String get logo => toPng('veli');

String get hotDog => toPng("hotdogs");
String get hotDog => toPng('hotdogs');

String toPng(String name) => "asset/image/$name.png";
String toPng(String name) => 'asset/image/$name.png';
}
4 changes: 2 additions & 2 deletions lib/core/extension/string_extension.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import '../constants/app/app_constants.dart';
extension StringLocalization on String {
String get locale => this.tr();

String get isValidEmail => this.contains(RegExp(ApplicationConstants.EMAIL_REGIEX)) ? null : "Email does not valid";
String get isValidEmail => contains(RegExp(ApplicationConstants.EMAIL_REGIEX)) ? null : 'Email does not valid';

bool get isValidEmails => RegExp(ApplicationConstants.EMAIL_REGIEX).hasMatch(this);
}

extension ImagePathExtension on String {
String get toSVG => "asset/svg/$this.svg";
String get toSVG => 'asset/svg/$this.svg';
}
15 changes: 5 additions & 10 deletions lib/core/init/cache/locale_manager.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:shared_preferences/shared_preferences.dart';
import '../../constants/enums/locale_keys_enum.dart';

class LocaleManager {
static LocaleManager _instance = LocaleManager._init();
static final LocaleManager _instance = LocaleManager._init();

SharedPreferences _preferences;
static LocaleManager get instance => _instance;
Expand All @@ -13,11 +13,8 @@ class LocaleManager {
_preferences = value;
});
}
static prefrencesInit() async {
if (instance._preferences == null) {
instance._preferences = await SharedPreferences.getInstance();
}
return;
static Future prefrencesInit() async {
instance._preferences ??= await SharedPreferences.getInstance();
}

Future<void> clearAll() async {
Expand All @@ -32,9 +29,7 @@ class LocaleManager {
await _preferences.setBool(key.toString(), value);
}

String getStringValue(PreferencesKeys key) =>
_preferences.getString(key.toString()) ?? "";
String getStringValue(PreferencesKeys key) => _preferences.getString(key.toString()) ?? '';

bool getBoolValue(PreferencesKeys key) =>
_preferences.getBool(key.toString()) ?? false;
bool getBoolValue(PreferencesKeys key) => _preferences.getBool(key.toString()) ?? false;
}
2 changes: 1 addition & 1 deletion lib/core/init/navigation/navigation_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:flutter/cupertino.dart';
import 'INavigationService.dart';

class NavigationService implements INavigationService {
static NavigationService _instance = NavigationService._init();
static final NavigationService _instance = NavigationService._init();
static NavigationService get instance => _instance;

NavigationService._init();
Expand Down
2 changes: 1 addition & 1 deletion lib/core/init/network/ICoreDio.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:fluttermvvmtemplate/core/init/network/IResponseModel.dart';

import '../../base/model/base_model.dart';
import '../../constants/enums/http_request_enum.dart';
import 'IResponseModel.dart';

abstract class ICoreDio {
Future<IResponseModel<R>> fetch<R, T extends BaseModel>(String path,
Expand Down
2 changes: 2 additions & 0 deletions lib/core/init/network/IResponseModel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ abstract class IErrorModel<T> {
}

class ResponseModel<T> extends IResponseModel<T> {
@override
final T data;
@override
final IErrorModel error;

ResponseModel({this.data, this.error});
Expand Down
12 changes: 7 additions & 5 deletions lib/core/init/network/core_dio.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,19 @@ import '../../extension/network_exntension.dart';
import 'ICoreDio.dart';
import 'IResponseModel.dart';

part "./network_core/core_operations.dart";
part './network_core/core_operations.dart';

class CoreDio with DioMixin implements Dio, ICoreDio {
@override
final BaseOptions options;

CoreDio(this.options) {
this.options = options;
this.interceptors.add(InterceptorsWrapper());
this.httpClientAdapter = DefaultHttpClientAdapter();
options = options;
interceptors.add(InterceptorsWrapper());
httpClientAdapter = DefaultHttpClientAdapter();
}

@override
Future<IResponseModel<R>> fetch<R, T extends BaseModel>(String path,
{@required HttpTypes type,
@required T parseModel,
Expand All @@ -35,7 +37,7 @@ class CoreDio with DioMixin implements Dio, ICoreDio {
final model = _responseParser<R, T>(parseModel, response.data);
return ResponseModel<R>(data: model);
default:
return ResponseModel(error: BaseError("message"));
return ResponseModel(error: BaseError('message'));
}
}
}
12 changes: 3 additions & 9 deletions lib/core/init/network/network_manager.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
import 'dart:io';

import 'package:dio/dio.dart';
import 'package:fluttermvvmtemplate/core/init/network/ICoreDio.dart';

import '../../base/model/base_error.dart';
import '../../base/model/base_model.dart';
import '../../constants/enums/locale_keys_enum.dart';
import '../cache/locale_manager.dart';
import 'ICoreDio.dart';
import 'core_dio.dart';

class NetworkManager {
Expand All @@ -19,10 +15,8 @@ class NetworkManager {
ICoreDio coreDio;

NetworkManager._init() {
final baseOptions = BaseOptions(
baseUrl: "https://jsonplaceholder.typicode.com/",
headers: {"val": LocaleManager.instance.getStringValue(PreferencesKeys.TOKEN)},
);
final baseOptions =
BaseOptions(baseUrl: "https://jsonplaceholder.typicode.com/", headers: {"val": LocaleManager.instance.getStringValue(PreferencesKeys.TOKEN)});
// _dio = Dio(baseOptions);

coreDio = CoreDio(baseOptions);
Expand Down
7 changes: 4 additions & 3 deletions lib/core/init/network/vexana_manager.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ import 'package:vexana/vexana.dart';
class VexanaManager {
static VexanaManager _instace;
static VexanaManager get instance {
if (_instace == null) _instace = VexanaManager._init();
if (_instace != null) return _instace;
_instace = VexanaManager._init();
return _instace;
}

static const String _iosBaseUrl = "http://localhost:3000/";
static const String _androidBaseUrl = "http://10.0.2.2:3000/";
static const String _iosBaseUrl = 'http://localhost:3000/';
static const String _androidBaseUrl = 'http://10.0.2.2:3000/';

VexanaManager._init();

Expand Down
6 changes: 3 additions & 3 deletions lib/core/init/theme/light/light_theme_interface.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:fluttermvvmtemplate/core/init/theme/light/color_scheme_light.dart';
import 'package:fluttermvvmtemplate/core/init/theme/light/padding_insets.dart';
import 'package:fluttermvvmtemplate/core/init/theme/light/text_theme_light.dart';
import 'color_scheme_light.dart';
import 'padding_insets.dart';
import 'text_theme_light.dart';

abstract class ILightTheme {
TextThemeLight textThemeLight = TextThemeLight.instance;
Expand Down
3 changes: 1 addition & 2 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:fluttermvvmtemplate/view/home/build/feed/view/build_feed_view.dart';
import 'package:provider/provider.dart';

import 'core/constants/app/app_constants.dart';
Expand All @@ -10,7 +9,7 @@ import 'core/init/navigation/navigation_route.dart';
import 'core/init/navigation/navigation_service.dart';
import 'core/init/notifier/provider_list.dart';
import 'core/init/notifier/theme_notifer.dart';
import 'view/authenticate/login/view/login_view.dart';
import 'view/home/build/feed/view/build_feed_view.dart';

void main() {
WidgetsFlutterBinding.ensureInitialized();
Expand Down
11 changes: 5 additions & 6 deletions lib/view/_product/_constants/image_path_svg.dart
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import 'package:fluttermvvmtemplate/core/extension/string_extension.dart';
import '../../../core/extension/string_extension.dart';

class SVGImagePaths {
static SVGImagePaths _instace;
static SVGImagePaths get instance {
if (_instace == null) _instace = SVGImagePaths._init();
return _instace;
return _instace ??= SVGImagePaths._init();
}

SVGImagePaths._init();

final relaxSVG = "relax".toSVG;
final astronautSVG = "astronaut".toSVG;
final chattingSVG = "chat".toSVG;
final relaxSVG = 'relax'.toSVG;
final astronautSVG = 'astronaut'.toSVG;
final chattingSVG = 'chat'.toSVG;
}
11 changes: 6 additions & 5 deletions lib/view/_product/_widgets/button/face_book_button.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:fluttermvvmtemplate/core/components/button/title_text_button.dart';

import '../../../../core/components/button/title_text_button.dart';

class FaceBookButton extends StatelessWidget {
final Function(FaceBookModel data, {String errorMessage}) onComplete;
Expand All @@ -9,14 +10,14 @@ class FaceBookButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return TitleTextButton(
text: "Facebbok login",
text: 'Facebbok login',
onPressed: () {
final isLengthSixCharacter = "asdasdasd".length == 6;
final isLengthSixCharacter = 'asdasdasd'.length == 6;

if (isLengthSixCharacter) {
this.onComplete(FaceBookModel("asdasd", "ASdasd"));
onComplete(FaceBookModel('asdasd', 'ASdasd'));
} else {
this.onComplete(null, errorMessage: "Facebook user not found");
onComplete(null, errorMessage: 'Facebook user not found');
}
},
);
Expand Down
3 changes: 2 additions & 1 deletion lib/view/_product/_widgets/button/login_button.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:fluttermvvmtemplate/core/components/button/icon_button.dart';

import '../../../../core/components/button/icon_button.dart';

class MVVMLoginButton extends StatelessWidget {
final Function(String data) onComplete;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:fluttermvvmtemplate/core/components/list-view/indicator_list_view.dart';
import '../../../../core/components/list-view/indicator_list_view.dart';

class OnBoardIndcator extends StatelessWidget {
final int itemCount;
Expand Down
6 changes: 3 additions & 3 deletions lib/view/_product/enum/network_route_enum.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ extension NetwrokRoutesString on NetworkRoutes {
String get rawValue {
switch (this) {
case NetworkRoutes.LOGIN:
return "login";
return 'login';
case NetworkRoutes.BUILD_HOME:
return "house";
return 'house';
default:
throw Exception("Routes Not FouND");
throw Exception('Routes Not FouND');
}
}
}
6 changes: 3 additions & 3 deletions lib/view/authenticate/login/view/login_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ class LoginView extends StatelessWidget {
indicatorWeight: 5,
indicatorSize: TabBarIndicatorSize.label,
tabs: [
Tab(text: " ${LocaleKeys.login_tab1.tr()} "),
Tab(text: ' ${LocaleKeys.login_tab1.tr()} '),
Tab(text: LocaleKeys.login_tab2.tr()),
]);
}
Expand Down Expand Up @@ -92,7 +92,7 @@ class LoginView extends StatelessWidget {
return Observer(builder: (_) {
return TextFormField(
controller: viewModel.passwordController,
validator: (value) => value.isNotEmpty ? null : "This field required",
validator: (value) => value.isNotEmpty ? null : 'This field required',
obscureText: viewModel.isLockOpen,
decoration: InputDecoration(
labelStyle: context.textTheme.subtitle1,
Expand All @@ -113,7 +113,7 @@ class LoginView extends StatelessWidget {
TextFormField buildTextFormFieldEmail(BuildContext context, LoginViewModel viewModel) {
return TextFormField(
controller: viewModel.emailController,
validator: (value) => value.isValidEmails ? "asdasd" : null,
validator: (value) => value.isValidEmails ? 'asdasd' : null,
decoration: InputDecoration(
labelText: LocaleKeys.login_email.tr(),
labelStyle: context.textTheme.subtitle1,
Expand Down
Loading