【问题标题】:How to change FLUTTER DropdownMenuItem's textDirection (change widget direction)如何更改 FLUTTER DropdownMenuItem 的 textDirection(更改小部件方向)
【发布时间】:2019-09-26 19:05:37
【问题描述】:

我需要根据语言选择更改小部件的 textDirection。我的全局翻译类中有一个 textDirection 变量,并将其添加到父小部件中。除了 DropdownMenuItems 之外,一切都很好。我尝试通过 Directionality 小部件包装文本小部件,但仍无法按预期工作。 例如:当我更改使用 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。选择不同语言时需要更改。

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:
    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: (_) {},
            ),
    

    只需用 Center 小部件包装 DropDownMenuItem 子小部件(文本)

    更新:抱歉,我错过了将其理解为如何使小部件居中的方式。

    您可以将 TextDirection.rtl 或 TextDirection.ltr 添加到 textDirection 属性

    如果它不起作用,请尝试用 mainAxisAlignment 将其包装成 Row 以结束

    【讨论】:

      【解决方案2】:

      对于从左到右的文本方向:

      Text('MyText', textDirection: TextDirection.ltr,)
      

      对于从右到左的文本方向:

      Text('MyText', textDirection: TextDirection.rtl)
      

      【讨论】:

        【解决方案3】:

        I Solved it

        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(),
                      ),
        

        【讨论】:

          猜你喜欢
          • 2022-06-18
          • 1970-01-01
          • 2022-06-30
          • 1970-01-01
          • 1970-01-01
          • 2019-08-27
          • 2021-12-27
          • 2013-03-21
          • 2019-07-02
          相关资源
          最近更新 更多