Skip to content

Can the features be modified to such level that one does not know about another's existence? #1

Description

@aap01
import 'package:common_dependencies/common_dependencies.dart';
import 'package:core/core.dart';

import 'package:flutter/material.dart';
import 'package:login/src/analytics/login_analytics_logger.dart';
import 'package:login/src/localization/login_localization.dart';

class LoginScreen extends StatefulWidget {
  @override
  _LoginScreenState createState() => _LoginScreenState();
}

class _LoginScreenState extends State<LoginScreen> {
  final AnalyticsLogger _analyticsLogger = AppInjector.I.get();
  final HomeNavigator _homeNavigator = AppInjector.I.get();

  late LoginLocalization _intl;

  @override
  Widget build(BuildContext context) {
    _intl = LoginLocalization.of(context);

    return Scaffold(
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(children: [
          const Spacer(),
          Text(_intl.tr('login_screen.title')),
          const Spacer(),
          SizedBox(
            width: double.infinity,
            child: ElevatedButton(
              onPressed: () {
                _analyticsLogger.logEvent(LoginEvents.loginButtonClick);
               // The following line is my point of interest
                _homeNavigator.navigateToRoot(context);
              },
              child: Text(_intl.tr('login_screen.action')),
            ),
          ),
          const SizedBox(height: 16),
        ]),
      ),
    );
  }
}

In the code snippet, LoginScreen has to know that there exists a HomeNavigator from Some feature other than Login itself.
I could imagine an Independent LoginScreen that only broadcasts or communicates back to a "central observer" notifying that login is successful.
That "central observer" could decide whether to navigate to HomeScreen or show a dialogue or do whatever it pleases.
I would like to hear your thoughts on this.

I have to mention that I very much appreciate the architecture you have created here. It is insightful in the sense of software architecture and I have learned a lot from it.
Thank you for such a good content

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions