Я добавляю поддержку локализации на веб -страницу, которую я строю, используя 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
Дарт / Флэттер: локализация не полностью доступна ⇐ Html
Программисты Html
-
Anonymous
1739356102
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
Подробнее здесь: [url]https://stackoverflow.com/questions/73945467/dart-flutter-localization-not-accessible-completely[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия