dart AppTheme更改字体家族依赖于Flutter中的语言更改本地化

2admgd59  于 2023-09-28  发布在  Flutter
关注(0)|答案(1)|浏览(90)

我有一个Flutter应用程序,所有的事情都工作正常,我有两个按钮,从英语翻译应用程序,乌尔都语和阿拉伯语,我做了一个AppTheme dart 文件,并调用它里面的主要,我给它的情况下'ar'语言代码,但它不工作,它总是除了(否则)条件,请帮助我。
代码如下:
在主dart文件中,我返回了构建小部件中的材料应用程序:

theme: AppTheme.lightTheme, 
   supportedLocales: LanguageDataModel.languageLocales(), ...etc

在AppTheme文件中,我在chatGPT中找到了以下代码,用于语言if,else case:

static final ThemeData lightTheme = ThemeData(
       fontFamily:
        appStore.selectedLanguage.validate(value: default_Language) == 'ar'
            ? 'Cairo'
            : 'RobotoCondensed',
   )...etc

我已经在常量文件中定义了default_Language='en'变量,它是否必须与验证构造函数做任何事情?
我的错误在哪里,有没有其他的解决方法?

t98cgbkg

t98cgbkg1#

import 'package:flutter/material.dart';

class AppTheme extends ThemeData {
  @override
  TextTheme textTheme(TextTheme base) {
    final locale = window.locale;

    // Set the font family depending on the current locale.
    if (locale.languageCode == 'en') {
      return base.copyWith(fontFamily: 'Roboto');
    } else if (locale.languageCode == 'ar') {
      return base.copyWith(fontFamily: 'Cairo');
    } else {
      return base.copyWith(fontFamily: 'Roboto');
    }
  }
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Theme(
      data: AppTheme(),
      child: MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: Text('My App'),
          ),
          body: Center(
            child: Text('This text will be displayed in the current locale\'s font family.'),
          ),
        ),
      ),
    );
  }
}

相关问题