flutter_navigation_mode 1.0.0 copy "flutter_navigation_mode: ^1.0.0" to clipboard
flutter_navigation_mode: ^1.0.0 copied to clipboard

PlatformAndroid

Detect Android navigation mode (gesture, 2-button, 3-button) and navigation bar height.

flutter_navigation_mode #

A Flutter plugin to detect Android navigation mode (gesture, 2-button, 3-button) and retrieve navigation bar height.


✨ Features #

  • Detect current navigation mode:

    • Gesture navigation
    • 2-button navigation
    • 3-button navigation
  • Get navigation bar height (in dp)

  • Works across multiple Android versions

  • Lightweight and easy to integrate


📱 Platform Support #

Platform Supported
Android
iOS

🚀 Getting Started #

Add the dependency in your pubspec.yaml:

dependencies:
  flutter_navigation_mode: ^1.0.0

Then run:

flutter pub get

🧠 Usage #

Get full navigation mode info #

import 'package:flutter_navigation_mode/flutter_navigation_mode.dart';

final mode = await FlutterNavigationMode.getNavigationMode();

print(mode.navigationType);       // NavigationType.gesture
print(mode.isGestureNavigation);  // true
print(mode.navigationBarHeight);  // e.g. 24
print(mode.interactionMode);      // e.g. 2

Get only gesture navigation status #

final isGesture = await FlutterNavigationMode.isGestureNavigation();

Get navigation bar height #

final height = await FlutterNavigationMode.getNavigationBarHeight();

📊 Navigation Types #

enum NavigationType {
  gesture,
  threeButton,
  twoButton,
  unknown,
}

📦 Example #

import 'package:flutter/material.dart';
import 'package:flutter_navigation_mode/flutter_navigation_mode.dart';

class NavigationExample extends StatefulWidget {
  const NavigationExample({super.key});

  @override
  State<NavigationExample> createState() => _NavigationExampleState();
}

class _NavigationExampleState extends State<NavigationExample> {
  NavigationModeInfo? _mode;

  @override
  void initState() {
    super.initState();
    loadMode();
  }

  Future<void> loadMode() async {
    final mode = await FlutterNavigationMode.getNavigationMode();
    setState(() => _mode = mode);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("Navigation Mode")),
      body: Center(
        child: _mode == null
            ? const CircularProgressIndicator()
            : Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  Text("Type: ${_mode!.navigationType}"),
                  Text("Gesture: ${_mode!.isGestureNavigation}"),
                  Text("Height: ${_mode!.navigationBarHeight}"),
                ],
              ),
      ),
    );
  }
}

🤝 Contributing #

Contributions are welcome!

Please follow these steps:

  1. Fork the repository
  2. Create a new branch
  3. Make your changes
  4. Submit a Pull Request

🐛 Issues #

If you find a bug or have a feature request, please open an issue on GitHub.


📄 License #

This project is licensed under the MIT License.

2
likes
150
points
146
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Detect Android navigation mode (gesture, 2-button, 3-button) and navigation bar height.

Repository (GitHub)
View/report issues

Topics

#android #navigation #system-ui #gesture

License

MIT (license)

Dependencies

flutter

More

Packages that depend on flutter_navigation_mode

Packages that implement flutter_navigation_mode