Дарт / Флэттер: локализация не полностью доступнаHtml

Программисты Html
Ответить
Anonymous
 Дарт / Флэттер: локализация не полностью доступна

Сообщение Anonymous »

Я добавляю поддержку локализации на веб -страницу, которую я строю, используя Flutter + Dart. Я вижу, что заголовок отображается правильно с использованием свойства s.current.name, но когда сборка приходит в виджеты, оно не удается со следующей ошибкой: < /p>
Assertion failed: file:///C:/dev/Adri/lib/generated/l10n.dart:21:12
_current != null
"No instance of S was loaded. Try to initialize the S delegate before accessing S.current."

main () и домашняя страница выглядит так:
void main() {
runApp(const HomeScreen());
}

class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});

@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (context) => LanguageChangeProvider(),
child: Builder(
builder: (context) => MaterialApp(
debugShowCheckedModeBanner: false,
locale: Provider.of(context, listen: true)
.currentLocale,
localizationsDelegates: const [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate
],
supportedLocales: S.delegate.supportedLocales,
//title: S.current.name,
home: MyHomePage(title: S.current.name,)),
),
);
}
}

class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});

final String title;

@override
State createState() => _MyHomePageState();
}
< /code>
Как видите, S.current.name может быть успешно передано в качестве названия веб -сайта: < /p>

Но кажется, что остальная часть домашнего экрана не может получить доступ к этому s По какой -то причине: < /p>
class _MyHomePageState extends State {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
actions: [
IconButton(
tooltip: SELECT_LANG_HU,
onPressed: () {
languageChangeProcess(context, LOCALE_HU);
},
icon: const Icon(Icons.language)),
IconButton(
tooltip: SELECT_LANG_EN,
onPressed: () {
languageChangeProcess(context, LOCALE_EN);
},
icon: const Icon(Icons.change_circle))
],
iconTheme: const IconThemeData(color: Colors.grey),
title: Text(
S.current.name,
style: TextStyle(color: Colors.grey.shade600),
),
flexibleSpace: Container(
decoration: BoxDecoration(
gradient: LinearGradient(colors: [
Colors.teal.shade50,
Colors.teal.shade100,
])),
),
),
body: Row(
children: [Expanded(flex: 1, child: Container())],
),
drawer: Drawer(
child: ListView(
children: [
DrawerHeader(
decoration: BoxDecoration(
gradient: LinearGradient(colors: [
Colors.teal.shade50,
Colors.teal.shade100
])),
padding:
const EdgeInsets.only(left: 2.0, right: 2.0, top: 4.0),
child: const ContactCard()),
MenuElement(Icons.person, S.current.introduction, () => {}),
MenuElement(Icons.school, S.current.education, () => {}),
MenuElement(
Icons.workspace_premium, S.current.publications, () => {}),
MenuElement(Icons.work, S.current.workExperience, () => {}),
],
),
));
}
< /code>
Я упускаю что -то очевидное? flutter_localizations:
sdk: flutter
provider: ^5.0.0


Подробнее здесь: https://stackoverflow.com/questions/739 ... completely
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»