generateLanguageSelector static method
Implementation
static String generateLanguageSelector(String projectName) {
return '''
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:$projectName/core/providers/locale_provider.dart';
class LanguageSelector extends StatelessWidget {
const LanguageSelector({Key? key}) : super(key: key);
static const Map<String, String> languages = {
'en': '🇬🇧 English',
'es': '🇪🇸 Español',
'fr': '🇫🇷 Français',
'de': '🇩🇪 Deutsch',
'it': '🇮🇹 Italiano',
'pt': '🇵🇹 Português',
'ru': '🇷🇺 Русский',
'zh': '🇨🇳 中文',
'ja': '🇯🇵 日本語',
'ar': '🇸🇦 العربية',
'hi': '🇮🇳 हिन्दी',
'bn': '🇮🇳 বাংলা',
'te': '🇮🇳 తెలుగు',
'mr': '🇮🇳 मराठी',
'ta': '🇮🇳 தமிழ்',
'gu': '🇮🇳 ગુજરાતી',
'kn': '🇮🇳 ಕನ್ನಡ',
'ml': '🇮🇳 മലയാളം',
'pa': '🇮🇳 ਪੰਜਾਬੀ',
'or': '🇮🇳 ଓଡ଼ିଆ',
};
@override
Widget build(BuildContext context) {
final localeProvider = Provider.of<LocaleProvider>(context);
final currentLocale = localeProvider.locale.languageCode;
return AlertDialog(
title: const Text('Select Language'),
content: SizedBox(
width: double.maxFinite,
child: ListView.builder(
shrinkWrap: true,
itemCount: languages.length,
itemBuilder: (context, index) {
final entry = languages.entries.elementAt(index);
final isSelected = currentLocale == entry.key;
return ListTile(
leading: Text(
entry.value.split(' ').first,
style: const TextStyle(fontSize: 24),
),
title: Text(entry.value.split(' ').skip(1).join(' ')),
trailing: isSelected
? Icon(Icons.check, color: Theme.of(context).primaryColor)
: null,
selected: isSelected,
onTap: () {
localeProvider.setLocale(Locale(entry.key));
Navigator.pop(context);
},
);
},
),
),
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: const Text('Cancel'),
),
],
);
}
static void show(BuildContext context) {
showDialog(
context: context,
builder: (context) => const LanguageSelector(),
);
}
}
''';
}