gpt4 book ai didi

Flutter:我想在运行时将字体应用于整个应用程序文本

转载 作者:IT老高 更新时间:2023-10-28 12:46:43 27 4
gpt4 key购买 nike

我的应用中有语言选择设置。在语言选择 English 或 Arabic 的基础上,我想使用不同的字体系列。我在 MaterialApp() 中完成了它,但它不会达到我的目标。

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'OnlyTick',
theme: ThemeData(
primarySwatch: Colors.indigo,
buttonColor: Colors.indigo,
iconTheme: IconThemeData(color: Colors.indigo),
accentIconTheme: IconThemeData(color: Colors.indigoAccent),
fontFamily: appLang == 'English'?'Proxima':'DroidKufi',
),
debugShowCheckedModeBanner: false,
home: SplashScreenPage(),
localizationsDelegates: [
// const TranslationsDelegate(), //TODO: will create it later, refer https://www.didierboelens.com/2018/04/internationalization---make-an-flutter-application-multi-lingual/
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('en', ''),
const Locale('ar', ''),
],
// setHome(),
routes: routes,
);
}

最佳答案

假设您正在使用以下结构运行项目:

    void main() => runApp(new App());

将函数 setAppFontFamily 添加到您的 App 类中,该类将负责更改您的应用程序 fontFamily:

    class App extends StatefulWidget {
App({Key key,}) :

super(key: key);

@override
_AppState createState() => new _AppState();

static void setAppFontFamily(BuildContext context, String _selectedFontFamily) {
_AppState state = context.findAncestorStateOfType<_AppState>();
state.setState(() {
state._fontFamily = _selectedFontFamily;
});
}


}

之后,将一个局部变量添加到您的 _AppState 类或您当前为 State 类使用的任何名称;

     String _fontFamily = 'Proxima' ; //Initial value before any selection is made

然后将 _fontFamily 分配给 Material App ThemefontFamily 属性:

     theme: ThemeData(
primarySwatch: Colors.indigo,
buttonColor: Colors.indigo,
iconTheme: IconThemeData(color: Colors.indigo),
accentIconTheme: IconThemeData(color: Colors.indigoAccent),
fontFamily: _fontFamily,
),

完成所有这些步骤后,您将能够使用以下行从应用程序的任何位置更改应用程序的 fontFamily:

     App.setAppFontFamily(context, 'DroidKufi');

关于Flutter:我想在运行时将字体应用于整个应用程序文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55085196/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com