I am using following code for localization in flutter
class LoginFirst1 extends StatefulWidget {
@override
_LoginFirstState1 createState() => new _LoginFirstState1();
}
class _LoginFirstState1 extends State<LoginFirst1> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
AppTranslationsDelegate _newLocaleDelegate;
@override
void initState() {
super.initState();
_newLocaleDelegate = AppTranslationsDelegate(newLocale: null);
application.onLocaleChanged = onLocaleChange;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: new ThemeData(
primaryColor: Colors.yellow.shade600,
primaryColorDark: Colors.yellow.shade300,
accentColor: Colors.yellow.shade400,
),
debugShowCheckedModeBanner: false,
home: NavigationDrawerDemo(),
localizationsDelegates: [
_newLocaleDelegate,
//provides localised strings
GlobalMaterialLocalizations.delegate,
//provides RTL support
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale("en", ""),
const Locale("uz", ""),
const Locale("ru", ""),
],
);
}
void onLocaleChange(Locale locale) {
setState(() {
_newLocaleDelegate = AppTranslationsDelegate(newLocale: locale);
});
}
}
after that
class NavigationDrawerDemo extends StatefulWidget {
//static NavigationDrawerDemo _instance = new NavigationDrawerDemo.internal();
// NavigationDrawerDemo.internal();
// factory NavigationDrawerDemo() => _instance;
static int counter;
@override
NavigationDrawerState createState() => new NavigationDrawerState();
/* @override
State<StatefulWidget> createState() {
return new NavigationDrawerState();
}*/
}
class NavigationDrawerState extends State<NavigationDrawerDemo> {
int _selectedIndex = 0;
NetworkUtil _netUtil = new NetworkUtil();
int index = 0;
static final List<String> languagesList = application.supportedLanguages;
static final List<String> languageCodesList =
application.supportedLanguagesCodes;
bool pressd = false;
bool pressd1 = false;
// String lang ="English";
final Map<dynamic, dynamic> languagesMap = {
languagesList[0]: languageCodesList[0],
languagesList[1]: languageCodesList[1],
languagesList[2]: languageCodesList[2],
};
String label = languagesList[0];
final _SearchDemoSearchDelegate _delegate = _SearchDemoSearchDelegate();
int _lastIntegerSelected;
final formKey = new GlobalKey<FormState>();
final scaffoldKey = new GlobalKey<ScaffoldState>();
// BuildContext get context => super.context;
@override
void initState() {
super.initState();
// AppTranslations.load(Locale('uz'));
application.onLocaleChanged = onLocaleChange;
onLocaleChange(Locale(languagesMap["English"]));
}
void onLocaleChange(Locale locale) async {
setState(() {
AppTranslations.load(locale);
});
}
void _select(String language) {
print("dd "+language);
onLocaleChange(Locale(languagesMap[language]));
setState(() {
});
}
@override
Widget build(BuildContext context) {
final l = AppTranslations.of(context);
List<Widget> drawerOptions = [];
for (var i = 0; i < drawerItems.length; i++) {
var d = drawerItems[i];
drawerOptions.add(new ListTile(
leading: new Icon(d.icon),
title: new Text(
d.title,
style: new TextStyle(fontSize: 14.0, fontWeight: FontWeight.w400),
),
selected: i == _selectedIndex,
onTap: () {
_onSelectItem(i);
print("_selectedIndex $_selectedIndex");
},
));
}
return new Scaffold(
appBar: AppBar(
title: Text(l.text("key_log_in")),
actions: <Widget>[
IconButton(
tooltip: 'Search',
icon: const Icon(Icons.search),
onPressed: () async {
final int selected = await showSearch<int>(
context: context,
delegate: _delegate,
);
if (selected != null && selected != _lastIntegerSelected) {
setState(() {
_lastIntegerSelected = selected;
});
}
},
),
PopupMenuButton<String>(
// overflow menu
onSelected: _select,
icon: new Icon(Icons.language, color: Colors.black),
itemBuilder: (BuildContext context) {
return languagesList
.map<PopupMenuItem<String>>((String choice) {
return PopupMenuItem<String>(
value: choice,
child: Text(choice),
);
}).toList();
},
),
],
),
on title: Text(l.text("key_log_in")),
I am getting this error
The following NoSuchMethodError was thrown building NavigationDrawerDemo(dirty, dependencies: [_LocalizationsScope-[GlobalKey#f385b]], state: NavigationDrawerState#46043): The method 'text' was called on null. Receiver: null Tried calling: text("key_log_in")