A modern VPN client built with Flutter supports Android and Windows but does not provide international communication services. The app is also available on Google Play.
| Directory | Description |
|---|---|
| application | The privch cross-platform VPN client app |
| xinlake-responsive | A Flutter package that contains widgets for responsive design |
| xinlake-text | A Flutter package that supports text processing |
| xinlake-qrcode | A Flutter plugin that read barcode from images, cameras, screens |
| xinlake-platform | A Flutter plugin that contains platform-side implementations to help Flutter apps interact with the system |
| window-interface | A Flutter plugin that controls the native window of your flutter app on Windows |
- Git. Make sure
git.execan be called by other build systems - Flutter SDK. Make sure
flutter doctor -vdoesn't prompt issues after installing the Flutter SDK, - Android Studio, only required to build Android APK.
- Android SDK Command-line Tools (last)
- CMake
- NDK
- Visual Studio 2022, only required to build Windows (native) application.
- "Desktop development with C++" workload
- C++ CMake tools for Windows
- [Optional] Windows 10 SDK v10.0.20348.0
C:\privch\application> flutter clean- Option 1, using Flutter commands.
C:\privch\application> flutter pub get
# This step is only required when doing a fresh build
C:\privch\application\android> .\gradlew.bat generateReleaseSources
C:\privch\application> flutter build apk- Option 2, using Android Studio.
Run the flutter pub get command then open <SOURCE-CODE>/application/android with Android Studio. For fresh builds you need to execute Build -> Run Generate Sources Gradle Tasks before building APK
- Option 1, using Flutter commands.
C:\privch\application> flutter pub get
C:\privch\application> flutter build windows- Option 2, using Visual Studio.
Run the flutter pub get command, Open Visual Studio select "Open a local folder" then select <SOURCE-CODE>/application/windows.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |









