Translate-Flutter/lib/widget/language_bottom_sheet.dart
fengshengxiong c39a412706 init connmit
2024-07-01 14:18:42 +08:00

56 lines
1.9 KiB
Dart
Executable File

// ignore_for_file: public_member_api_docs, sort_constructors_first
import 'package:country_flags/country_flags.dart';
import 'package:flutter/material.dart';
import 'package:translator_lux/entity/language_entity.dart';
languageBottonSheet(
context, Function(SelectLanguageItemEntity? selectedLanguage) onSelect) {
showModalBottomSheet(
context: context,
builder: (context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
const TextField(
decoration: InputDecoration(
enabledBorder:
OutlineInputBorder(borderSide: BorderSide(width: 2))),
),
Expanded(
child: ListView.builder(
itemBuilder: (context, index) {
SelectLanguageItemEntity languageData =
LanguageDataEntity.languageData[index];
return ListTile(
leading: CountryFlag.fromCountryCode(
languageData.countryCode,
width: 24,
height: 24,
shape: const Circle(),
),
title: Text(languageData.languageName),
onTap: () {
Navigator.pop(context, languageData);
},
);
},
itemCount: LanguageDataEntity.languageData.length,
))
],
),
);
}).then(
(selectedLanguage) => onSelect(selectedLanguage),
);
}
class LanguageDataEntity {
static List<SelectLanguageItemEntity> languageData = [
SelectLanguageItemEntity(
countryCode: "cn", languageName: "Chinese", languageCode: "zh-cn"),
SelectLanguageItemEntity(
countryCode: "us", languageName: "English", languageCode: "en"),
];
}