Flutter 颤振重建父窗口小部件

Flutter 颤振重建父窗口小部件,flutter,dart,widget,state,rebuild,Flutter,Dart,Widget,State,Rebuild,我需要帮助。我在LanguageDropdown类中有一个下拉小部件,用户可以在其中选择语言。小部件位于设置类中的设置页面小部件中。语言会在其他页面上更改,但不会在当前页面上更改。如何重建该特定页面,从而使该页面上的语言也发生变化? 请参见下面的代码 import 'package:jptapp/features/settings/change_language/app_localization.dart'; class LanguageDropDown extends StatefulWid

我需要帮助。我在LanguageDropdown类中有一个下拉小部件,用户可以在其中选择语言。小部件位于设置类中的设置页面小部件中。语言会在其他页面上更改,但不会在当前页面上更改。如何重建该特定页面,从而使该页面上的语言也发生变化?
请参见下面的代码

import 'package:jptapp/features/settings/change_language/app_localization.dart';

class LanguageDropDown extends StatefulWidget {
  @override
  _LanguageDropDownState createState() {
    return _LanguageDropDownState();
  }
}

class _LanguageDropDownState extends State<LanguageDropDown> {
  String _value = allTranslations.currentLanguage;
  @override
  Widget build(BuildContext context) {
    return DropdownButton<String>(
      items: [
        DropdownMenuItem<String>(
          child: Text('English'),
          value: 'en',
        ),
        DropdownMenuItem<String>(
          child: Text('Magyar'),
          value: 'hu',
        ),
        DropdownMenuItem<String>(
          child: Text('Srpski'),
          value: 'rs',
        ),
      ],
      onChanged: (String value) {
        setState(() async{
          _value = value;
          await allTranslations.setNewLanguage(_value);
        });
      },
      hint: Text(_value),
      value: _value,
    );
  }
}
import'包:jptapp/features/settings/change_language/app_localization.dart';
类语言下拉列表扩展StatefulWidget{
@凌驾
_LanguageDropDownState createState(){
返回_LanguageDropDownState();
}
}
类_语言DropDownState扩展状态{
字符串_value=allTranslations.currentLanguage;
@凌驾
小部件构建(构建上下文){
返回下拉按钮(
项目:[
下拉菜单项(
child:Text('English'),
值:“en”,
),
下拉菜单项(
child:Text('Magyar'),
价值观:“胡”,
),
下拉菜单项(
child:Text('Srpski'),
值:“rs”,
),
],
onChanged:(字符串值){
setState(()异步{
_价值=价值;
等待所有翻译。setNewLanguage(_值);
});
},
提示:文本(_值),
值:_值,
);
}
}
import'包:jptapp/core/constants/colors.dart';
导入“包:jptapp/features/settings/change_language/app_localization.dart”;
导入“package:jptapp/features/settings/widgets/widgets.dart”;
类设置扩展了StatefulWidget{
@凌驾
_SettingsState createState()=>_SettingsState();
}
类设置状态扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:对,
背景颜色:MyColors.appBarColor,
标题:正文(
allTranslations.text(“设置”),
),
),
正文:ListView(
子项:ListTile.divideTiles(
上下文:上下文,
瓷砖:[
列表砖(
尾部:机械更改按钮(),
标题:正文(
allTranslations.text('darkmode'),
),
),
列表砖(
拖尾:LanguageDropDown(),
标题:正文(
所有翻译。文本(“语言”),
),
),
],
).toList(),
),
);
}
}

我不确定这是否有效,但请尝试以下方法:

import 'package:flutter/material.dart';
import 'package:jptapp/features/settings/change_language/app_localization.dart';

class LanguageDropDown extends StatefulWidget {
  @override
  _LanguageDropDownState createState() {
    return _LanguageDropDownState();
  }
}

class _LanguageDropDownState extends State<LanguageDropDown> {
  String _value = allTranslations.currentLanguage;

  @override
  Widget build(BuildContext context) {
    return DropdownButton<String>(
      items: [
        DropdownMenuItem<String>(
          child: Text('English'),
          value: 'en',
        ),
        DropdownMenuItem<String>(
          child: Text('Magyar'),
          value: 'hu',
        ),
        DropdownMenuItem<String>(
          child: Text('Srpski'),
          value: 'rs',
        ),
      ],
      onChanged: (String value) {
        setState(() async {
          _value = value;
          await allTranslations.setNewLanguage(_value);
          Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => Settings()
              ));
        });
      },
      hint: Text(_value),
      value: _value,
    );
  }
}
导入“包装:颤振/材料.省道”;
导入“包:jptapp/features/settings/change_language/app_localization.dart”;
类语言下拉列表扩展StatefulWidget{
@凌驾
_LanguageDropDownState createState(){
返回_LanguageDropDownState();
}
}
类_语言DropDownState扩展状态{
字符串_value=allTranslations.currentLanguage;
@凌驾
小部件构建(构建上下文){
返回下拉按钮(
项目:[
下拉菜单项(
child:Text('English'),
值:“en”,
),
下拉菜单项(
child:Text('Magyar'),
价值观:“胡”,
),
下拉菜单项(
child:Text('Srpski'),
值:“rs”,
),
],
onChanged:(字符串值){
setState(()异步{
_价值=价值;
等待所有翻译。setNewLanguage(_值);
导航器。推(
上下文
材料路线(
生成器:(上下文)=>Settings()
));
});
},
提示:文本(_值),
值:_值,
);
}
}
import 'package:flutter/material.dart';
import 'package:jptapp/features/settings/change_language/app_localization.dart';

class LanguageDropDown extends StatefulWidget {
  @override
  _LanguageDropDownState createState() {
    return _LanguageDropDownState();
  }
}

class _LanguageDropDownState extends State<LanguageDropDown> {
  String _value = allTranslations.currentLanguage;

  @override
  Widget build(BuildContext context) {
    return DropdownButton<String>(
      items: [
        DropdownMenuItem<String>(
          child: Text('English'),
          value: 'en',
        ),
        DropdownMenuItem<String>(
          child: Text('Magyar'),
          value: 'hu',
        ),
        DropdownMenuItem<String>(
          child: Text('Srpski'),
          value: 'rs',
        ),
      ],
      onChanged: (String value) {
        setState(() async {
          _value = value;
          await allTranslations.setNewLanguage(_value);
          Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => Settings()
              ));
        });
      },
      hint: Text(_value),
      value: _value,
    );
  }
}