Annotation processor that provides better navigation on android multi-modules projects 🛳.

Overview

FlowNav    Maven Central

FlowNav is a mobile library for Android that helps and provider a better way to make multi-modules navigation.

The main purpose of this library is to help in cases where you have a project with multiple modules and need to navigate from one feature to another without adding dependency between them. For example, to navigate from module A to module B, you do not need to add module B as a dependency of module A.

There are other ways to solve the problem of module-to-module navigation such as using Intent-filter (which is error-prone and not support fragments). FlowNav solves these problems, either using Activities, native Fragments, or through the Navigation Component.

Check the wiki.

Processor

dependencies {

    kapt "dev.jeziellago:flownav-processor:$VERSION"
}

Annotation

dependencies {

    implementation "dev.jeziellago:flownav-annotation:$VERSION"
}

Router

dependencies {

    api "dev.jeziellago:flownav-router:$VERSION"
}

Router dependency is imported only on the navigation module.

All other modules will import the Processor and Annotation dependencies

Start Now!

LICENSE

This project is available under Apache Public License version 2.0. See LICENSE.

Comments
  • Wrong paths with multi-application modules

    Wrong paths with multi-application modules

    I've two application modules, app_a_app and app_b_app. And feature modules like app_a_payment and app_b_payment. These specific modules inherit from an common scope module like payment.

    In specific feature modules (by app), always the activity have the same name and the same EntryFlowNav like PayersActivity.

    So my module router do the maginc (with this cool library) calling the right path. Like start(FEATURE_X) inside a extension function like openFeatureX().

    When I'm running the app, the entrymap generated by library it's mixing paths from feature modules from other application module.

    E.g.:

    [1] br.com.app_a.ScreenCool [2] br.com.app_b.ScreenCool

    I'm seeing references/paths in wrong application, causing ActivityNotFoundException.

    bug v0.4.4 
    opened by pedrofsn 13
  • [QUESTION] Multiple application modules in same project

    [QUESTION] Multiple application modules in same project

    Can I handle multiples flownav.main.module with this library? I've multiple applications modules in my scenario, it's a kind of white label application.

    We're using https://github.com/Tulioh/SweetFactory to handle multi module navigation, it's working well but unhappy this processors is not incremental.

    enhancement 
    opened by pedrofsn 3
  • lateinit property entryMap has not been initialized

    lateinit property entryMap has not been initialized

    java.lang.RuntimeException: Unable to create application br.X.X.App: kotlin.UninitializedPropertyAccessException: lateinit property entryMap has not been initialized [...] Caused by: kotlin.UninitializedPropertyAccessException: lateinit property entryMap has not been initialized

    My modules:

    • app_x_app: contains application class annotated with @FlowNavMain and started with FlowNavApp.start(getEntryMap()) in onCreate method. Use kapt processor and implementation of annotation.

    • app_x_login: contains login activity annotated with @EntryFlowNav(NavigationKeys.FEATURE_LOGIN). Use kapt processor and implementation of annotation.

    • router: contains a extension function to open login activity. Use kapt processor, implementation of annotation and router implementation (as 'api') .

    fun BaseActivity.openLoginWithoutHistory() {
        start(
            FEATURE_LOGIN,
            listOf(
                Intent.FLAG_ACTIVITY_NO_ANIMATION,
                Intent.FLAG_ACTIVITY_NEW_TASK,
                Intent.FLAG_ACTIVITY_CLEAR_TASK
            )
        )
    }
    

    The big vision is:

    • app_x_app
      • app_x_login
      • router

    In gradle.properties:

    flownav.main.module=app_x_app

    What am I missing?

    opened by pedrofsn 2
  • Add multi-app support

    Add multi-app support

    This PR add support to multiples application module in some project #14.

    Add to gradle.peoperties yours application modules using ,.

    flownav.main.module=appmodule1,appmodule2,appmodule3

    New application module was added on sample.

    opened by jeziellago 0
  • Add support to application module with name different `app`

    Add support to application module with name different `app`

    If other module is used as application module (instead of theapp module), now is supported by FlowNav with the property flownav.main.module on gradle.properties file.

    opened by jeziellago 0
  • Add navigation support to native fragment

    Add navigation support to native fragment

    This PR include changes for add native support to Fragment (before only with the Navigation Component). Also, some improvements was added:

    • Better FlowNav setup
    • Add flags to navigation using Intents
    • Remove EntryFragmentFlowNav extension and add actionId to EntryFlowNav
    enhancement 
    opened by jeziellago 0
Releases(0.5.2)
Owner
Jeziel Lago
Jeziel Lago
A multi back stack android navigation

Labyrinth A multi back stack android navigation MIT License - Copyright (c) 2020 Abanoub Milad Nassief Hanna [email protected] @Linkedin @Github Scr

Abanoub Milad Nassief Hanna 6 Dec 9, 2022
Alligator is a modern Android navigation library that will help to organize your navigation code in clean and testable way.

Alligator Alligator is a modern Android navigation library that will help to organize your navigation code in clean and testable way. Features Any app

Artur Artikov 290 Dec 9, 2022
DSC Moi University session on using Navigation components to simplify creating navigation flow in our apps to use best practices recommended by the Google Android Team

Navigation Components Navigate between destination using safe args How to use the navigation graph and editor How send data between destinations Demo

Breens Mbaka 6 Feb 3, 2022
Bottom-App-Bar-with-Bottom-Navigation-in-Jetpack-compose-Android - Bottom App Bar with Bottom Navigation in Jetpack compose

Bottom-App-Bar-with-Bottom-Navigation-in-Jetpack-compose-Android This is simple

Shruti Patel 1 Jul 11, 2022
[ACTIVE] Simple Stack, a backstack library / navigation framework for simpler navigation and state management (for fragments, views, or whatevers).

Simple Stack Why do I want this? To make navigation to another screen as simple as backstack.goTo(SomeScreen()), and going back as simple as backstack

Gabor Varadi 1.3k Jan 2, 2023
Navigation Component: THE BEST WAY to create navigation flows for your app

LIVE #017 - Navigation Component: A MELHOR FORMA de criar fluxos de navegação para o seu app! Código fonte do projeto criado na live #017, ensinando c

Kaique Ocanha 4 Jun 15, 2022
New style for app design simple bottom navigation with side navigation drawer UI made in Jetpack Compose.😉😎

BottomNavWithSideDrawer New style for app design simple bottom navigtaion with side navigation drawer UI made in Jetpack Compose. ?? ?? (Navigation Co

Arvind Meshram 5 Nov 24, 2022
Navigation Drawer Bottom Navigation View

LIVE #019 - Toolbar, Navigation Drawer e BottomNavigationView com Navigation Com

Kaique Ocanha 6 Jun 15, 2022
Animated Tab Bar is an awesome navigation extension that you can use to add cool, animated and fully customizable tab navigation in your apps

Animated Tab Bar is an awesome navigation extension that you can use to add cool, animated and fully customizable tab navigation in your apps. The extension provides handy methods and properties to change the behaviour as well as the appearance of the navigation bar.

Zain Ul Hassan 4 Nov 30, 2022
🎉 [Android Library] A light-weight library to easily make beautiful Navigation Bar with ton of 🎨 customization option.

Bubble Navigation ?? A light-weight library to easily make beautiful Navigation Bars with a ton of ?? customization options. Demos FloatingTopBarActiv

Gaurav Kumar 1.7k Dec 31, 2022
An android navigation bar widget

Chip Navigation Bar A navigation bar widget inspired on Google Bottom Navigation mixed with Chips component. Usage <!-- bottom_menu.xml --> <menu xmln

Ismael Di Vita 743 Jan 1, 2023
Okuki is a simple, hierarchical navigation bus and back stack for Android, with optional Rx bindings, and Toothpick DI integration.

Okuki A simple, hierarchical navigation bus and back stack for Android, with optional Rx bindings, and Toothpick integration for automatic dependency-

Cain Wong 143 Nov 25, 2022
A small navigation library for Android to ease the use of fragment transactions & handling backstack (also available for Jetpack Compose).

A small navigation library for Android to ease the use of fragment transactions & handling backstack (also available for Jetpack Compose).

Kaustubh Patange 88 Dec 11, 2022
A simple & curved & material bottom navigation for Android written in Kotlin with ♥ .

A simple & curved & material bottom navigation for Android written in Kotlin with ♥ .

Hamidreza Etebarian 1.2k Dec 30, 2022
A simple navigation library for Android 🗺️

Enro ??️ A simple navigation library for Android "The novices’ eyes followed the wriggling path up from the well as it swept a great meandering arc ar

Isaac Udy 216 Dec 16, 2022
React Native lets you customize the navigation bar for Android.

react-native-system-navigation-bar React Native lets you customize the navigation bar for Android. Hide Lean Back Immersive Sticky Immersive Low Profi

Kadir Aydınlı 120 Jan 3, 2023
NavigationComponent-SendingData - Android Navigation Component : Pass value (arguments) in Fragments

NavigationComponent-SendingData Android Navigation Component : Pass value (argum

Reyhaneh Ezatpanah 1 Dec 28, 2021
AndroidBriefActions - Android library for sending and observing non persistent actions such as showing a message; nice readable way to call navigation actions from ViewModel or Activity/Fragment.

implementation "com.vladmarkovic.briefactions:briefactions:$briefActionsVersion" Benefits Why use brief-actions library pattern: Prevent short-term ac

null 2 Dec 22, 2022
NavigationSafeArgs - Passing data with Navigation Component in Android

Navigation SafeArgs Sample Passing data with Navigation Component in Android. Pr

Emine İNAN 0 Feb 13, 2022