Tinh tế mobile apps built with Flutter for evaluation purposes.
Google Play Store: Open Beta Testing
Apple App Store: TestFlight
Or check the PR / commit comments, this repo has GitHub Actions setup to build and upload the apps to GCS (automatically deleted after 30 days).
- Supported platforms: Android, iOS, Linux, macOS, Windows
- State management with provider
- Apple login via sign_in_with_apple
- Google login via google_sign_in
- Store authentication token with flutter_secure_storage
- Render HTML with flutter_widget_from_html
- Push notification via firebase_messaging
- Dark mode: on / off / auto
- Developer hidden menu (tap version in about dialog thrice)
- Android, iOS domain association with built-in deep link support
Screenshots
Wide | Narrow |
---|---|
Normal thread | With post replies | Poll |
---|---|---|
Tinhte Fact | Background post |
---|---|
Compare | Galleria | YouTube |
---|---|---|
All credentials are encrypted so you won't be able to compile the app immediately after a git pull. You have to replace the files mentioned in .gitattributes to build.
For example, lib/config.encrypted.dart
should look like below:
import 'package:the_app/src/config.dart';
class Config extends ConfigBase {
@override
final apiRoot = 'https://domain.com/community/api/index.php';
@override
final clientId = 'abc';
@override
final clientSecret = 'xyz';
@override
final siteRoot = 'https://domain.com/community';
}
See How to use another package name? for more information to rename the app.
- Translate the
lib/l10n/intl_messages.arb
into your new language. Save it as/lib/l10n/intl_(language_code).arb
. - Execute
./tool/l10n_2.sh
to generate l10n files - Update
supportedLocales
param inlib/main.dart
- Update
isSupported
method inlib/src/intl.dart
- Update
CFBundleLocalizations
inios/Runner/Info.plist
to include the new language code
Pick a unique package name across Play Store and App Store then update these files:
.github/workflows/flutter.yml
GCS_BUCKET, GCS_URLandroid/app/build.gradle
applicationId, signingConfigs.releaseandroid/app/src/main/AndroidManifest.xml
package, android:labelandroid/app/src/main/res/values/strings.xml
app_nameandroid/fastlane/metadata/android/en-US/
title.txt, full_description.txt, short_description.txtandroid/fastlane/Appfile
firebase/.firebaserc
projects.defaultios/Runner.xcodeproj/project.pbxproj
PRODUCT_BUNDLE_IDENTIFIER x2, PROVISIONING_PROFILE_SPECIFIER x2ios/Runner/Info.plist
CFBundleName, CFBundleURLSchemesios/fastlane/Appfile
ios/fastlane/Fastfile
xcargs (PROVISIONING_PROFILE_SPECIFIER), manifest (appURL, displayImageURL, fullSizeImageURL)ios/fastlane/Matchfile
linux/CMakeLists.txt
APPLICATION_IDmacos/Runner/Configs/AppInfo.xcconfig
macos/Runner.xcodeproj/project.pbxproj
PROVISIONING_PROFILE_SPECIFIER x3macos/fastlane/Appfile
macos/fastlane/Fastfile
notarizemacos/fastlane/Matchfile
windows/runner/Runner.rc
pubspec.yaml
msix_config>identity_name- Re-run
flutterfire configure
to update Firebase apps
You will also need to move the files within android/app/src/main/java/com/daohoangson/flutter_ttdemo
to another directory to match the new Android package.
For Firebase Messaging, execute these commands to set the proper config variables:
firebase functions:config:set websub.hub=https://domain.com/xenforo/api/index.php\?subscriptions
firebase functions:config:set websub.url=https://region-project.cloudfunctions.net/websub