Closed maxa11an closed 4 years ago
@maxa11an I tried ur code and running well
try clean project with flutter clean
Done, issue still remains.
Same issue
@psycura @maxa11an please need more information
Ok, here it is:
pubspec.yaml
environment:
sdk: ">=2.6.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
provider: ^4.0.4
get_it: 3.1.0
hive: ^1.4.1+1
hive_flutter: ^0.3.0+2
easy_localization: ^2.0.0+1
rxdart: ^0.23.1
division: ^0.8.7+2
sailor: ^0.6.0
cupertino_icons: ^0.1.3
dev_dependencies:
flutter_test:
sdk: flutter
build_runner:
flutter_icons:
flutter:
uses-material-design: true
assets:
- assets/langs/en.json
- assets/langs/he.json
- assets/langs/de.json
- assets/images/
main.dart
import 'package:easy_localization/easy_localization.dart';
import 'package:eton_news/core/blocs/index.dart';
import 'package:eton_news/core/services/firestore_database.dart';
import 'package:eton_news/core/services/services.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'config/routes.dart';
import 'core/app/app_component.dart';
void main() async {
Crashlytics.instance.enableInDevMode = true;
FlutterError.onError = Crashlytics.instance.recordFlutterError;
WidgetsFlutterBinding.ensureInitialized();
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
await HiveService.initHive();
Routes.createRoutes();
runApp(
EasyLocalization(
path: 'assets/langs',
useOnlyLangCode: true,
supportedLocales: [
Locale('he'),
Locale('en'),
Locale('de'),
],
child: AppComponent(
userBlocBuilder: (_) => UserBloc(),
databaseBuilder: (_) => FirestoreDatabase(),
),
),
);
}
app_component.dart
import 'package:eton_news/config/routes.dart';
import 'package:eton_news/core/app/auth_widget.dart';
import 'package:eton_news/core/app/auth_widget_builder.dart';
import 'package:eton_news/core/blocs/index.dart';
import 'package:eton_news/core/domains/domains.dart';
import 'package:eton_news/core/services/firestore_database.dart';
import 'package:eton_news/core/services/services.dart';
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:firebase_analytics/observer.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class AppComponent extends StatelessWidget {
final UserBloc Function(BuildContext context) userBlocBuilder;
final FirestoreDatabase Function(
BuildContext context,
) databaseBuilder;
const AppComponent({
Key key,
this.userBlocBuilder,
this.databaseBuilder,
}) : super(key: key);
@override
Widget build(BuildContext context) {
var data = EasyLocalization.of(context);
return MultiProvider(
providers: [
Provider<UserBloc>(
create: userBlocBuilder,
dispose: (_, userBloc) => userBloc.dispose(),
),
],
child: AuthWidgetBuilder(
databaseBuilder: databaseBuilder,
builder: (BuildContext context, AsyncSnapshot<User> userSnapshot) {
return MaterialApp(
title: 'Eton.News',
theme: ThemeData(fontFamily: 'OpenSansHebrew'),
debugShowCheckedModeBanner: false,
navigatorKey: Routes.sailor.navigatorKey,
onGenerateRoute: Routes.sailor.generator(),
home: AuthWidget(userSnapshot: userSnapshot),
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
EasyLocalization.of(context).delegate,
],
locale: Locale('he'),
);
},
),
);
}
}
Error:
I/flutter (29381): ════════
I/flutter (29381): Warning: This application's locale, en_US, is not supported by all of its
I/flutter (29381): localization delegates.
I/flutter (29381): > A Localization delegate that supports the en_US locale was not found.
I/flutter (29381): See https://flutter.dev/tutorials/internationalization/ for more
I/flutter (29381): information about configuring an app's locale, supportedLocales,
I/flutter (29381): and localizationsDelegates parameters.
I/flutter (29381): ════════
I/flutter (29381):
I/flutter (29381): Flutter error caught by Crashlytics plugin:
I/flutter (29381): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (29381): The following NoSuchMethodError was thrown building SchoolSelectorHead(dirty, dependencies:
I/flutter (29381): [MediaQuery]):
I/flutter (29381): The method 'get' was called on null.
I/flutter (29381): Receiver: null
I/flutter (29381): Tried calling: get("login_screen.welcomeMessage")
I/flutter (29381):
I/flutter (29381): The relevant error-causing widget was:
I/flutter (29381): SchoolSelectorHead
I/flutter (29381): file:///Users/eugenealitz/projects/AppWize/eton_news_flutter/lib/ui/app_loading/app_loading_screen.dart:25:15
I/flutter (29381):
I/flutter (29381): When the exception was thrown, this was the stack:
I/flutter (29381): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
I/flutter (29381): #1 Localization._resolve (package:easy_localization/src/localization.dart:99:48)
I/flutter (29381): #2 Localization.tr (package:easy_localization/src/localization.dart:57:35)
I/flutter (29381): #3 tr (package:easy_localization/src/public.dart:8:31)
I/flutter (29381): #4 SchoolSelectorHead.build (package:eton_news/ui/login/school_selector_head.dart:29:13)
Also, strange things happen on change locale - if i try to change locale to Locale('he'), i see in console that locale was changed to 'he_IL', but right after it another message with locale 'he_US'
PS: In version 1.4.1 - everything work fine (except issue with current page translations on locale change)
https://github.com/oneLab-Projects/picbox/tree/ac4c54129108f21cdf9d69eb022bc27b62c7ac24/ I have the same problem. Please fix
════════ Exception caught by widgets library ═══════════════════════════════════
The following NoSuchMethodError was thrown building App(dirty):
The method 'get' was called on null.
Receiver: null
Tried calling: get("profile.night_theme")
The relevant error-causing widget was
App
lib\main.dart:16
When the exception was thrown, this was the stack
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
#1 Localization._resolve
package:easy_localization/src/localization.dart:99
#2 Localization.tr
package:easy_localization/src/localization.dart:57
#3 tr
package:easy_localization/src/public.dart:8
#4 StringTranslateExtension.tr
package:easy_localization/src/public_ext.dart:40
...
════════════════════════════════════════════════════════════════════════════════
@Laim0n @maxa11an @psycura thnx for reporting, I'm working on
So I tried to use this for a new project I'm working on. Yet it is basically just the default app. However it throws below error.
The relevant error-causing widget was: MyHomePage file:///Users/maxallanniklasson/vipmonkey/_dev/app_flutter_public/lib/main.dart:24:13 When the exception was thrown, this was the stack: #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5) #1 Localization._resolve (package:easy_localization/src/localization.dart:100:48) #2 Localization.tr (package:easy_localization/src/localization.dart:58:35) #3 tr (package:easy_localization/src/public.dart:8:31) #4 _MyHomePageState.build (package:app_flutter_public/main.dart:58:9)
main.dart:
import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:app_flutter_public/theme/style.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:easy_localization/easy_localization.dart'; void main() => runApp(EasyLocalization( child: MyApp(), supportedLocales: [Locale('en', 'US'), Locale('sv', 'SE')], path: 'resources/langs', ),); class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: appTheme(), home: MyHomePage(), localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, EasyLocalization .of(context) .delegate, ], supportedLocales: EasyLocalization .of(context) .supportedLocales, locale: EasyLocalization .of(context) .locale, ); } } class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { int _counter = 0; void _incrementCounter() { setState(() { _counter++; }); } @override Widget build(BuildContext context) { log(tr("title"), name: this.toString()); return Scaffold( appBar: AppBar( title: Text('Flutter Demo'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'titles', ), Text( '$_counter', style: Theme.of(context).textTheme.display1, ), ], ), ), floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: Icon(Icons.add), ), ); } }
pubspec.yaml
name: app_flutter_public description: A new Flutter project. version: 1.0.0+1 environment: sdk: ">=2.1.0 <3.0.0" dependencies: flutter: sdk: flutter easy_localization: 2.0.0 dev_dependencies: flutter_test: sdk: flutter flutter_localizations: sdk: flutter flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: assets: - resources/langs/sv_SE.json - resources/langs/en_US.json - resources/langs/sv.json - resources/langs/en.json
And the language files are there with one key:value each
title
.
@maxa11an u have a file naming error use -
not _
- resources/langs/sv_SE.json # to sv-SE.json
- resources/langs/en_US.json # to en-US.json
- resources/langs/sv.json
- resources/langs/en.json
@Laim0n about ur code i fixed check RPs this
@psycura plz check JSON file probably wrong file or wrong name
@psycura plz check JSON file probably wrong file or wrong name
I think you wrong, because i use same jsons, that use with 1.4.1.
I think that this issue is related to parameter useOnlyLangCode: true,
I think plugin still try to seek locales by 'langCode_coutryCode'
So I tried to use this for a new project I'm working on. Yet it is basically just the default app. However it throws below error.
main.dart:
pubspec.yaml
And the language files are there with one key:value each
title
.