button - 如何在我的颤振应用程序中制作下拉本地化器?
问题描述
在我的应用程序中将有 2 种语言(阿拉伯语和英语)我建立了一个设置页面,用户可以在其中根据FlatButton
他们按下的键切换语言。但我想将其更改FlatButtons
为DropdownButtons
. 目前代码有效,我可以在应用程序中成功切换语言。
代码如下所示:
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"));
});
},
),
],
),
),
);
}
}
解决方案
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,
),
作为替代方案,您可以使用InputLanguage
flutter_input包,或者看看它是如何在那里完成的。
推荐阅读
- javascript - 即使在 React 中具有初始状态,状态也未定义
- mysql - MySQL 从表中选择返回全部,加上一个带有条件的列和另一个查询
- prometheus - 在thanos查询中,prometheus sidecar状态为health,但是我查询时,报错:grpc: the client connection is closing
- javascript - 如何从 php 文件执行 javascript 功能
- flutter - 当我单击继续时,值不会保留在文本表单字段中,然后当我返回页面时,值是空的 请注意,我使用了页面视图
- python - 如何将两个函数绘制为具有相同 x 轴的相同函数?
- json - Json 未在 SwiftUI 中加载
- javascript - TypeError:对象原型可能只是一个对象或空
- python - 转换熊猫数据框 - 从行值创建列名
- python - Matplot中的动画未显示