【问题标题】:Invalid argument(s) in FlutterFlutter 中的参数无效
【发布时间】:2020-05-04 14:32:52
【问题描述】:

在模拟器上重新安装我的应用程序后,我的控制台向我抛出此错误:

Invalid argument(s)
The relevant error-causing widget was
    FutureBuilder<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]]));
                    });
                  },
                )
              ],
            );
        }
      )
    );
  }
}

【问题讨论】:

  • 发生此错误时屏幕上显示什么?

标签: android ios flutter dart


【解决方案1】:

尝试 flutter clean 命令,然后再试一次。

【讨论】:

  • 我尝试但没有任何改变
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 2020-01-03
  • 2016-07-07
  • 2021-10-07
  • 1970-01-01
相关资源
最近更新 更多