[英]Invalid argument(s) in Flutter
After reinstalling my app on emulator, my console throw me this error:在模拟器上重新安装我的应用程序后,我的控制台向我抛出了这个错误:
Invalid argument(s)
The relevant error-causing widget was
FutureBuilder<SharedPreferences>
can someone help me with this problem?有人可以帮我解决这个问题吗? I think, that problem is in my sharedPreferences我认为,这个问题出在我的 sharedPreferences 中
class _LanguageSelectorState extends State<LanguageSelector> {
SharedPreferences sharedPreferences;
static final List<String> languagesList = application.supportedLanguages;
static final List<String> languageCodesList =
application.supportedLanguagesCodes;
final Map<dynamic, dynamic> languagesMap = {
languagesList[0]: languageCodesList[0],
languagesList[1]: languageCodesList[1],
};
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: Colors.white,
iconTheme: IconThemeData(color: Colors.black),
title: Text(AppTranslations.of(context).text("settings_language"), style: TextStyle(color: Colors.black, letterSpacing: 1)),
elevation: 0.0,
centerTitle: true,
bottom: PreferredSize(child: Container(color: Colors.black, height: 0.1), preferredSize: Size.fromHeight(0.1),),
),
body: _buildLanguagesList()
);
}
@override
void initState(){
super.initState();
getCurrentLanguage();
}
Future<String> getCurrentLanguage() async {
sharedPreferences = await SharedPreferences.getInstance();
}
String selectedLanguage;
String currentLanguage;
bool _langOne = false;
bool _langTwo = false;
_buildLanguagesList() {
return SingleChildScrollView(
child: FutureBuilder(
future: SharedPreferences.getInstance(),
builder: (context, snapshot){
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: EdgeInsets.all(20),
child: Text(AppTranslations.of(context).text("settings_current_language") + ": " + sharedPreferences.getString("currentLanguage")),
),
CheckboxListTile(
title: Text(languagesList[0]),
value: _langOne,
onChanged: (value) {
setState(() {
_langOne = value;
sharedPreferences.setString("currentLanguage", languagesList[0]);
if(_langOne){
_langTwo = false;
}
application.onLocaleChanged(Locale(languagesMap[languagesList[0]]));
});
},
),
CheckboxListTile(
title: Text(languagesList[1]),
value: _langTwo,
onChanged: (value) {
setState(() {
_langTwo = value;
sharedPreferences.setString("currentLanguage", languagesList[1]);
if(_langTwo){
_langOne = false;
}
application.onLocaleChanged(Locale(languagesMap[languagesList[1]]));
});
},
)
],
);
}
)
);
}
}
try flutter clean command and then try it again.尝试 flutter clean 命令,然后再试一次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.