Open QR Code is an open-source cross-platform application developed using Flutter as main framework used to build the application, in common C, C++, Dart, Skia (a 2D rendering engine), and Impeller (the default rendering engine on iOS), Java, Kotlin. Open QR Code allows users to generate and scan QR codes effortlessly. The app is available on Android, Windows, and the Web. Users can generate QR codes from any text input, save them to their gallery, share them directly from the app, and scan QR codes to retrieve encoded information. Whether you're on Android, Windows, or the Web, you can create and share QR codes or scan them with a single click.
- About
- Features
- Source Code Version 1.0.0
- Platforms Tested
- Troubleshooting and Issues
- Demo Links and Downloads
- Screenshots
- Project Structure
- Dependencies
- Getting Started
- Installation
- Usage
- Contributing
- Acknowledgments
- License
- Contact
- Generate QR Codes: Convert any text input into a QR code.
- Scan QR Codes: Easily scan QR codes using your device's camera.
- Save QR Codes: Save the generated QR codes to your device's gallery.
- Share QR Codes: Share generated QR codes directly from the app.
- Cross-Platform: Available on Android, Web, and Windows.
- Improved UI: Enhanced user interface for a better user experience.
- Cross-Platform Support: Now available on Windows and Web.
- MVVM Architecture: Adopted MVVM architecture for better code organization and testability.
- Bug Fixes: Fixed issues related to QR code scanning on some Android devices.
- Android: Tested on Android 11 (Samsung Galaxy A32) and Redmi Note 13 Pro Plus 5G.
- Web: Fully functional on major browsers like Chrome, Firefox, and Edge.
- Windows 11: Tested on Windows 11 with a downloadable
.exe
file. - IOS
- Linux
- MacOS
Thess Troubleshooting while you are building(Not our Build and Demo)
- QR Code not saving to gallery: Ensure that the app has the necessary permissions to access the storage.
- App crashes on startup: Check that all dependencies are installed correctly and that your environment is set up for Flutter development.
- On some mobile devices the icons spaces and not correctly displaying on some devices size.
- The QR Scanner is not working well using the web, only the QR Generator is working perfectly.
- The QR Scanner and Generator is not working well using the windows, it was working only on debug mode.
- Web Demo: Open QR Code Web
- Android APK: Download APK
- Windows 11 EXE: Download EXE
Open QR Code leverages several technologies and follows the MVVM (Model-View-ViewModel) architecture to ensure clean separation of concerns, testability, and reusability. Below are some key technologies and concepts used in the project:
- C/C++: Core components and libraries may use C and C++ for performance-critical sections.
- Dart: The primary programming language used for Flutter applications.
- Skia: A 2D rendering engine used by Flutter to draw the UI.
- Impeller: The default rendering engine on iOS, providing smooth and efficient rendering of graphics.
- Java: Used primarily in Android development.
- Kotlin: A modern programming language for Android development.
- HTML: Used for the web version of the application.
- JSON: For data interchange between the app and the backend or for configuration.
- Model: Represents the data and business logic of the application. In this project, the Model handles QR code data, including generation and scanning processes.
- View: The UI layer, which interacts with the user. In this project, views are represented by Flutter widgets, such as screens and buttons for generating and scanning QR codes.
- ViewModel: Acts as an intermediary between the Model and the View. It processes input from the View, updates the Model, and triggers UI updates.
- Separation of Concerns: MVVM separates the data (Model), UI (View), and business logic (ViewModel), making the codebase easier to manage and extend.
- Testability: By decoupling the UI from the business logic, it's easier to write unit tests for the ViewModel and Model without relying on the actual UI.
- Reusability: Components such as ViewModels can be reused across different parts of the application, reducing code duplication.
This project uses the following Flutter packages:
- qr_flutter: A Flutter widget that allows generating QR codes.
- qr_code_scanner: A Flutter plugin for scanning QR codes using the camera.
- path_provider: A Flutter plugin to access commonly used locations on the device's file system.
- screenshot: A Flutter plugin to capture widgets as images.
- share_plus: A Flutter plugin to share content from your Flutter app.
- permission_handler: A Flutter plugin to request and check permissions on iOS and Android.
These instructions will help you set up the project on your local machine for development and testing purposes.
- Flutter SDK
- Android Studio or Visual Studio Code with Flutter and Dart extensions.
- (Optional) Xcode for iOS development.
- Clone the repository
git clone https://github.com/yourusername/OpenQRCode.git cd open-qr-code
- Install dependencies
git flutter pub get cd open-qr-code
- Android
flutter run -d android
- Webs
flutter run -d chrome
- Windows
flutter run -d windows
-
- Open the app.
- Enter the text you want to encode in the QR code.
- Click "Generate" to create the QR code.
- Use the "Save" button to save the QR code to your gallery.
- Use the "Share" button to share the QR code with others.
-
- Open the app.
- Navigate to the "Scan" tab.
- Point your device's camera at a QR code.
- The app will automatically detect and display the encoded information.
We welcome contributions! Here's how you can help:
- Give the project a STAR.
- Follow us on Github.
- Follow us on Social Media.
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Make your changes.
- Submit a pull request.
- Please make sure to update tests as appropriate.
- Flutter: The framework used to build the application.
- Baseflow: For the permission_handler and other plugins.
- All Contributors: Thanks to everyone who contributed to the project.
This project is licensed under the MIT license.
In pursuit of innovation,
OpenLabX Team
- Website: https://openlabx.com
- Email: contact@openlabx.com
Follow Us: