如何更改 FLUTTER DropdownMenuItem 的 textDirection(更改小部件方向)

Zus*_*kin 1 flutter flutter-layout

我需要根据语言选择更改小部件的 textDirection。我的全局翻译类中有一个 textDirection 变量,并将其添加到父小部件中。除了 DropdownMenuItems 之外,所有工作都很好。我尝试通过方向性小部件包装文本小部件,但仍然无法按预期工作。例如:当我更改使用 rtl 项目的语言时,应该向右对齐,这目前没有发生。

return DropdownMenuItem(
                child: Directionality(textDirection: Translations.textDirection ,
                    child: new Text(listItems,textDirection: Translations.textDirection,)

                    ...
Run Code Online (Sandbox Code Playgroud)

我还尝试在用容器包装整个 DropdownButton 后添加 textDirection。

 return Container(
      child: Row(
        mainAxisAlignment: MainAxisAlignment.end,
        textDirection: Translations.textDirection,
        children: <Widget>[
          DropdownButton(                   
Run Code Online (Sandbox Code Playgroud)

但还是不行。我应该怎么做才能改变 DropdownMenuItems 的 textDirection ?任何帮助将不胜感激。

注意:我无法将 textDirection 添加到 MaterialApp。选择不同的语言时需要更改它。

Hus*_*li 5

我解决了

DropdownButton<String>(
                hint: Text(
                  'City',
                  style: TextStyle(fontFamily: 'Cairo'),
                ),
                isExpanded: true,
                value: dropdownValue,
                elevation: 4,
                style: TextStyle(
                    color: Colors.deepPurple, fontFamily: 'Cairo'),
                underline: Container(
                  height: 2,
                  color: Colors.deepPurpleAccent,
                ),
                onChanged: (String newValue) {
                  setState(() {
                    dropdownValue = newValue;
                    debugPrint(cityInfo.indexOf(newValue).toString());
                  });
                },
                items:
                    cityInfo.map<DropdownMenuItem<String>>((String value) {
                  return DropdownMenuItem<String>(
                    value: value,
                    child: Container(
                      alignment: Alignment.centerRight,
                      child: Text(
                        value,
                      ),
                    ),
                  );
                }).toList(),
              ),
Run Code Online (Sandbox Code Playgroud)