Flutter plugin for scanning and generating QR codes using the ZXing library, supporting Android, iOS, and desktop platforms
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
|
|
extension LocaleParsing on String {
|
|
|
|
Locale parseLocale() {
|
|
|
|
assert(contains('_') == true);
|
|
|
|
var languageCode = split('_').first;
|
|
|
|
var countryCode = split('_').last;
|
|
|
|
return Locale.fromSubtags(
|
|
|
|
languageCode: languageCode, countryCode: countryCode);
|
|
|
|
}
|
|
|
|
|
|
|
|
String toLangIcon() {
|
|
|
|
assert(length == 2);
|
|
|
|
switch (toLowerCase()) {
|
|
|
|
case 'us':
|
|
|
|
case 'en':
|
|
|
|
return '🇺🇸';
|
|
|
|
case 'ru':
|
|
|
|
return '🇷🇺';
|
|
|
|
case 'am':
|
|
|
|
case 'hy':
|
|
|
|
return '🇦🇲';
|
|
|
|
default:
|
|
|
|
return '🇺🇸';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
String toLangName() {
|
|
|
|
assert(length == 2);
|
|
|
|
switch (toLowerCase()) {
|
|
|
|
case 'us':
|
|
|
|
case 'en':
|
|
|
|
return toLangIcon() + ' English';
|
|
|
|
case 'ru':
|
|
|
|
return toLangIcon() + ' Русский';
|
|
|
|
case 'am':
|
|
|
|
case 'hy':
|
|
|
|
return toLangIcon() + ' Հայերեն';
|
|
|
|
default:
|
|
|
|
return toLangIcon() + ' English';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
String toLangCode() {
|
|
|
|
assert(contains('_') == true);
|
|
|
|
return split('_').first;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// context extension to show a toast message
|
|
|
|
extension ContextExtension on BuildContext {
|
|
|
|
void showToast(String message) {
|
|
|
|
ScaffoldMessenger.of(this).hideCurrentSnackBar();
|
|
|
|
ScaffoldMessenger.of(this).showSnackBar(
|
|
|
|
SnackBar(
|
|
|
|
content: Padding(
|
|
|
|
padding: const EdgeInsets.only(bottom: 30.0),
|
|
|
|
child: Text(message, textAlign: TextAlign.center),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|