首页 > 解决方案 > 如何在我的颤振应用程序中制作下拉本地化器?

问题描述

在我的应用程序中将有 2 种语言(阿拉伯语和英语)我建立了一个设置页面,用户可以在其中根据FlatButton他们按下的键切换语言。但我想将其更改FlatButtonsDropdownButtons. 目前代码有效,我可以在应用程序中成功切换语言。

代码如下所示:

import 'package:flutter/material.dart';

import '../drawer/drawer.dart';
import '../app_localization.dart';
import '../locale_helper.dart';

class AppSettings extends StatefulWidget {
  static const routeName = '/settings-screen';

  @override
  _AppSettingsState createState() => _AppSettingsState();
}

class _AppSettingsState extends State<AppSettings> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Settings',),
      ),
      drawer: MyDrawer(),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new FlatButton(
              child: new Text("English"),
              color: AppLocalizations.of(context).locale == "en"
                  ? Colors.grey
                  : Colors.blue,
              onPressed: () {
                this.setState(() {
                  helper.onLocaleChanged(new Locale("en"));
                });
              },
            ),
            new FlatButton(
              child: new Text("العربية"),
              color: AppLocalizations.of(context).locale == "ar"
                  ? Colors.grey
                  : Colors.blue,
              onPressed: () {
                this.setState(() {
                  helper.onLocaleChanged(new Locale("ar"));
                });
              },
            ),
          ],
        ),
      ),
    );
  }
}

标签: buttonflutterdropdown

解决方案


FlatButton用这样的一个替换你的两个DropdownButton

DropdownButton(
  icon: Icon(Icons.language),
  items: [
    DropdownMenuItem( value: Locale( 'en' ),
      child: Text( 'English'),),
    DropdownMenuItem( value: Locale( 'ar' ),
      child: Text( 'العربية' ),
    ],
  onChanged: (v) => setState(() { helper.onLocaleChanged( v )}),
  value: AppLocalizations.of(context).locale,
),

作为替代方案,您可以使用InputLanguageflutter_input包,或者看看它是如何在那里完成的。


推荐阅读