我需要根据语言选择更改小部件的textDirection。我的全局翻译类中有一个textDirection变量,并将其添加到父窗口小部件中。除了DropdownMenuItems之外,其他所有方法都工作正常。我尝试使用方向性小部件包装文本小部件,但仍无法按预期工作。 例如:当我更改使用rtl项的语言时,应与哪个 目前没有发生。
return DropdownMenuItem(
child: Directionality(textDirection: Translations.textDirection ,
child: new Text(listItems,textDirection: Translations.textDirection,)
...
我还尝试在用容器包装整个DropdownButton之后添加textDirection。
return Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
textDirection: Translations.textDirection,
children: <Widget>[
DropdownButton(
但仍然无法正常工作。如何更改DropdownMenuItems的textDirection?任何帮助将不胜感激。
注意:我无法将textDirection添加到MaterialApp。选择其他语言时需要更改它。
答案 0 :(得分:3)
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(),
),
答案 1 :(得分:0)
DropdownButton<String>(
items: <String>['A', 'B', 'C', 'D'].map((String value) {
return new DropdownMenuItem<String>(
value: value,
child: new Center(
child: Text(value),
),
);
}).toList(),
onChanged: (_) {},
),
只需将DropDownMenuItem子窗口小部件(文本)包装为中心窗口小部件
更新:对不起,我想念它是如何使小部件居中的。
您可以将TextDirection.rtl或TextDirection.ltr添加到textDirection属性
如果它不起作用,请尝试将其包装为mainAxisAlignment结尾的行
答案 2 :(得分:0)
对于从左到右的文字方向:
Text('MyText', textDirection: TextDirection.ltr,)
OR
从右向左的文字方向:
Text('MyText', textDirection: TextDirection.rtl)