TF-2046 Use controller cached in GetWidget instead of using Get.find<LoginController>()
(cherry picked from commit 4403e2871d6486e693b6c4052df92b7634eadb25)
This commit is contained in:
@@ -27,7 +27,6 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
|||||||
abstract class BaseLoginView extends GetWidget<LoginController> {
|
abstract class BaseLoginView extends GetWidget<LoginController> {
|
||||||
BaseLoginView({Key? key}) : super(key: key);
|
BaseLoginView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
final loginController = Get.find<LoginController>();
|
|
||||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
final responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
final imagePaths = Get.find<ImagePaths>();
|
final imagePaths = Get.find<ImagePaths>();
|
||||||
|
|
||||||
@@ -58,9 +57,9 @@ abstract class BaseLoginView extends GetWidget<LoginController> {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
(success) {
|
(success) {
|
||||||
if (loginController.loginFormType.value == LoginFormType.credentialForm) {
|
if (controller.loginFormType.value == LoginFormType.credentialForm) {
|
||||||
return AppLocalizations.of(context).loginInputCredentialMessage;
|
return AppLocalizations.of(context).loginInputCredentialMessage;
|
||||||
} else if (loginController.loginFormType.value == LoginFormType.ssoForm) {
|
} else if (controller.loginFormType.value == LoginFormType.ssoForm) {
|
||||||
return AppLocalizations.of(context).loginInputSSOMessage;
|
return AppLocalizations.of(context).loginInputSSOMessage;
|
||||||
}
|
}
|
||||||
return AppLocalizations.of(context).loginInputUrlMessage;
|
return AppLocalizations.of(context).loginInputUrlMessage;
|
||||||
@@ -107,7 +106,7 @@ abstract class BaseLoginView extends GetWidget<LoginController> {
|
|||||||
side: const BorderSide(width: 0, color: AppColor.primaryColor)
|
side: const BorderSide(width: 0, color: AppColor.primaryColor)
|
||||||
))
|
))
|
||||||
),
|
),
|
||||||
onPressed: loginController.handleLoginPressed,
|
onPressed: controller.handleLoginPressed,
|
||||||
child: Text(
|
child: Text(
|
||||||
AppLocalizations.of(context).signIn,
|
AppLocalizations.of(context).signIn,
|
||||||
style: const TextStyle(fontSize: 16, color: Colors.white)
|
style: const TextStyle(fontSize: 16, color: Colors.white)
|
||||||
@@ -132,8 +131,8 @@ abstract class BaseLoginView extends GetWidget<LoginController> {
|
|||||||
padding: const EdgeInsets.only(bottom: 24, right: 24, left: 24),
|
padding: const EdgeInsets.only(bottom: 24, right: 24, left: 24),
|
||||||
child: TypeAheadFormFieldBuilder<RecentLoginUsername>(
|
child: TypeAheadFormFieldBuilder<RecentLoginUsername>(
|
||||||
key: const Key('login_username_input'),
|
key: const Key('login_username_input'),
|
||||||
controller: loginController.usernameInputController,
|
controller: controller.usernameInputController,
|
||||||
onTextChange: loginController.setUserNameText,
|
onTextChange: controller.setUserNameText,
|
||||||
textInputAction: TextInputAction.next,
|
textInputAction: TextInputAction.next,
|
||||||
autocorrect: false,
|
autocorrect: false,
|
||||||
autofillHints: const [AutofillHints.email],
|
autofillHints: const [AutofillHints.email],
|
||||||
@@ -143,10 +142,10 @@ abstract class BaseLoginView extends GetWidget<LoginController> {
|
|||||||
..setHintText(AppLocalizations.of(context).email))
|
..setHintText(AppLocalizations.of(context).email))
|
||||||
.build(),
|
.build(),
|
||||||
debounceDuration: const Duration(milliseconds: 300),
|
debounceDuration: const Duration(milliseconds: 300),
|
||||||
suggestionsCallback: loginController.getAllRecentLoginUsernameAction,
|
suggestionsCallback: controller.getAllRecentLoginUsernameAction,
|
||||||
itemBuilder: (context, loginUsername) => RecentItemTileWidget(loginUsername, imagePath: imagePaths),
|
itemBuilder: (context, loginUsername) => RecentItemTileWidget(loginUsername, imagePath: imagePaths),
|
||||||
onSuggestionSelected: (recentUsername) {
|
onSuggestionSelected: (recentUsername) {
|
||||||
loginController.setUsername(recentUsername.username);
|
controller.setUsername(recentUsername.username);
|
||||||
passFocusNode.requestFocus();
|
passFocusNode.requestFocus();
|
||||||
},
|
},
|
||||||
suggestionsBoxDecoration: const SuggestionsBoxDecoration(borderRadius: BorderRadius.all(Radius.circular(14))),
|
suggestionsBoxDecoration: const SuggestionsBoxDecoration(borderRadius: BorderRadius.all(Radius.circular(14))),
|
||||||
@@ -168,11 +167,11 @@ abstract class BaseLoginView extends GetWidget<LoginController> {
|
|||||||
autocorrect: false,
|
autocorrect: false,
|
||||||
autofillHints: [AutofillHints.password]
|
autofillHints: [AutofillHints.password]
|
||||||
)
|
)
|
||||||
..setOnSubmitted((value) => loginController.handleLoginPressed())
|
..setOnSubmitted((value) => controller.handleLoginPressed())
|
||||||
..passwordInput(true)
|
..passwordInput(true)
|
||||||
..key(const Key('login_password_input'))
|
..key(const Key('login_password_input'))
|
||||||
..obscureText(true)
|
..obscureText(true)
|
||||||
..onChange(loginController.setPasswordText)
|
..onChange(controller.setPasswordText)
|
||||||
..textInputAction(TextInputAction.done)
|
..textInputAction(TextInputAction.done)
|
||||||
..hintText(AppLocalizations.of(context).password)
|
..hintText(AppLocalizations.of(context).password)
|
||||||
..setFocusNode(passFocusNode))
|
..setFocusNode(passFocusNode))
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ class LoginView extends BaseLoginView {
|
|||||||
scrollDirection: Axis.vertical,
|
scrollDirection: Axis.vertical,
|
||||||
child: _buildCenterForm(context))),
|
child: _buildCenterForm(context))),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
if (loginController.loginFormType.value == LoginFormType.credentialForm
|
if (controller.loginFormType.value == LoginFormType.credentialForm
|
||||||
|| loginController.loginFormType.value == LoginFormType.ssoForm) {
|
|| controller.loginFormType.value == LoginFormType.ssoForm) {
|
||||||
return _buildBackButton(context);
|
return _buildBackButton(context);
|
||||||
}
|
}
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
@@ -42,8 +42,8 @@ class LoginView extends BaseLoginView {
|
|||||||
: Stack(children: [
|
: Stack(children: [
|
||||||
_buildCenterForm(context),
|
_buildCenterForm(context),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
if (loginController.loginFormType.value == LoginFormType.credentialForm
|
if (controller.loginFormType.value == LoginFormType.credentialForm
|
||||||
|| loginController.loginFormType.value == LoginFormType.ssoForm) {
|
|| controller.loginFormType.value == LoginFormType.ssoForm) {
|
||||||
return _buildBackButton(context);
|
return _buildBackButton(context);
|
||||||
}
|
}
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
@@ -72,7 +72,7 @@ class LoginView extends BaseLoginView {
|
|||||||
style: const TextStyle(fontSize: 32, color: AppColor.colorNameEmail, fontWeight: FontWeight.w900)
|
style: const TextStyle(fontSize: 32, color: AppColor.colorNameEmail, fontWeight: FontWeight.w900)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
Obx(() => buildLoginMessage(context, loginController.viewState.value)),
|
Obx(() => buildLoginMessage(context, controller.viewState.value)),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
switch (controller.loginFormType.value) {
|
switch (controller.loginFormType.value) {
|
||||||
case LoginFormType.baseUrlForm:
|
case LoginFormType.baseUrlForm:
|
||||||
@@ -114,7 +114,7 @@ class LoginView extends BaseLoginView {
|
|||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.only(right: 24, left: 24, bottom: 24),
|
padding: const EdgeInsets.only(right: 24, left: 24, bottom: 24),
|
||||||
child: TypeAheadFormFieldBuilder<RecentLoginUrl>(
|
child: TypeAheadFormFieldBuilder<RecentLoginUrl>(
|
||||||
controller: loginController.urlInputController,
|
controller: controller.urlInputController,
|
||||||
textInputAction: TextInputAction.next,
|
textInputAction: TextInputAction.next,
|
||||||
keyboardType: TextInputType.url,
|
keyboardType: TextInputType.url,
|
||||||
onTextSubmitted: (value) => controller.handleNextInUrlInputFormPress(),
|
onTextSubmitted: (value) => controller.handleNextInUrlInputFormPress(),
|
||||||
@@ -124,8 +124,8 @@ class LoginView extends BaseLoginView {
|
|||||||
.build(),
|
.build(),
|
||||||
debounceDuration: const Duration(milliseconds: 300),
|
debounceDuration: const Duration(milliseconds: 300),
|
||||||
suggestionsCallback: (pattern) async {
|
suggestionsCallback: (pattern) async {
|
||||||
loginController.formatUrl(pattern);
|
controller.formatUrl(pattern);
|
||||||
return loginController.getAllRecentLoginUrlAction(pattern);
|
return controller.getAllRecentLoginUrlAction(pattern);
|
||||||
},
|
},
|
||||||
itemBuilder: (context, loginUrl) => RecentItemTileWidget(loginUrl, imagePath: imagePaths),
|
itemBuilder: (context, loginUrl) => RecentItemTileWidget(loginUrl, imagePath: imagePaths),
|
||||||
onSuggestionSelected: (loginUrl) => controller.formatUrl(loginUrl.url),
|
onSuggestionSelected: (loginUrl) => controller.formatUrl(loginUrl.url),
|
||||||
@@ -165,7 +165,7 @@ class LoginView extends BaseLoginView {
|
|||||||
style: const TextStyle(fontSize: 16, color: Colors.white)
|
style: const TextStyle(fontSize: 16, color: Colors.white)
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
loginController.handleNextInUrlInputFormPress();
|
controller.handleNextInUrlInputFormPress();
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@@ -188,7 +188,7 @@ class LoginView extends BaseLoginView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildLoadingProgress(BuildContext context) {
|
Widget _buildLoadingProgress(BuildContext context) {
|
||||||
return Obx(() => loginController.viewState.value.fold(
|
return Obx(() => controller.viewState.value.fold(
|
||||||
(failure) {
|
(failure) {
|
||||||
switch (controller.loginFormType.value) {
|
switch (controller.loginFormType.value) {
|
||||||
case LoginFormType.baseUrlForm:
|
case LoginFormType.baseUrlForm:
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class LoginView extends BaseLoginView {
|
|||||||
style: const TextStyle(fontSize: 32, color: AppColor.colorNameEmail, fontWeight: FontWeight.w900)
|
style: const TextStyle(fontSize: 32, color: AppColor.colorNameEmail, fontWeight: FontWeight.w900)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
Obx(() => buildLoginMessage(context, loginController.viewState.value)),
|
Obx(() => buildLoginMessage(context, controller.viewState.value)),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
switch (controller.loginFormType.value) {
|
switch (controller.loginFormType.value) {
|
||||||
case LoginFormType.credentialForm:
|
case LoginFormType.credentialForm:
|
||||||
@@ -179,7 +179,7 @@ class LoginView extends BaseLoginView {
|
|||||||
style: const TextStyle(fontSize: 32, color: AppColor.colorNameEmail, fontWeight: FontWeight.w900)
|
style: const TextStyle(fontSize: 32, color: AppColor.colorNameEmail, fontWeight: FontWeight.w900)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
Obx(() => buildLoginMessage(context, loginController.viewState.value)),
|
Obx(() => buildLoginMessage(context, controller.viewState.value)),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
switch (controller.loginFormType.value) {
|
switch (controller.loginFormType.value) {
|
||||||
case LoginFormType.credentialForm:
|
case LoginFormType.credentialForm:
|
||||||
@@ -251,14 +251,14 @@ class LoginView extends BaseLoginView {
|
|||||||
style: const TextStyle(fontSize: 16, color: Colors.white)
|
style: const TextStyle(fontSize: 16, color: Colors.white)
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
loginController.handleSSOPressed();
|
controller.handleSSOPressed();
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildLoadingProgress(BuildContext context) {
|
Widget _buildLoadingProgress(BuildContext context) {
|
||||||
return Obx(() => loginController.viewState.value.fold(
|
return Obx(() => controller.viewState.value.fold(
|
||||||
(failure) {
|
(failure) {
|
||||||
switch (controller.loginFormType.value) {
|
switch (controller.loginFormType.value) {
|
||||||
case LoginFormType.baseUrlForm:
|
case LoginFormType.baseUrlForm:
|
||||||
|
|||||||
Reference in New Issue
Block a user