Как мне использовать пользовательский шрифт с заданным размером в flutter / dart?

#css #fonts #dart #flutter

#css #шрифты #dart #flutter

Вопрос:

Я пытаюсь использовать color fontWeight и fontFamily с style: style.copyWith помощью пользовательского шрифта, который я пытаюсь использовать Vonique , я импортировал его вот так в pubspec.yaml

 fonts:
       - family: Vonique
         fonts: 
           - assets: fonts/Vonique-64-Bold-Italic.ttf
           - assets: fonts/Vonique-64-Italic.ttf
           - assets: fonts/Vonique-64-Bold.ttf
           - assets: fonts/Vonique-64.ttf

  

Это правильный способ его импорта?

Я пробовал это как с «, так и без», по-прежнему не меняет шрифт текста.

 Text('Login',
 style: style.copyWith(
   color: Colors.redAccent, fontWeight: FontWeight.bold, fontFamily: 'Vonique'
),
),
  

и

 Text('Login',
 style: style.copyWith(
   color: Colors.redAccent, fontWeight: FontWeight.bold, fontFamily: Vonique
),
),
  

Я хочу, чтобы шрифт выглядел так, как здесь https://www.dafont.com/vonique-64.font но это не похоже на то, что было раньше.

Ответ №1:

Если вы хотите применить шрифт к тексту, вы не используете copyWith. Просто задайте свой стиль, используя новый TextStyle.

 Text('Login', style: TextStyle(fontFamily: 'Vonique',  fontWeight: FontWeight.bold))
  

Если вы хотите применить текст глобально, то в вашем приложении material вы можете применить глобальные изменения текста, создав копию текущей темы и применив некоторые новые свойства, как показано ниже.

 MaterialApp(
  title: 'Flutter Demo',
  theme: ThemeData(
     // Uncomment in phase 3 to apply white to text
    textTheme: Theme.of(context).textTheme.apply(
      bodyColor: Colors.white,
      displayColor: Colors.white
    ),
  ),
  home: HomeSingleFile(),
);
  

На том же примечании, если у вас есть существующий стиль, который вы хотите применить с некоторыми дополнительными изменениями, используйте метод .apply вместо copyWith .

Комментарии:

1. Хорошо, я также не смог заставить TextStyle работать, поэтому я использовал style.copyWith, но теперь он работает. Также кажется, что у меня был другой стиль текста, мешающий этому, поэтому быстрое удаление сработало. Еще раз спасибо.

2. @overdeveloping потрясающе. Отметьте это как правильный ответ, чтобы другие разработчики знали, что проблема решена.

Ответ №2:

Не забудьте остановить отладку приложения и снова запустить ваше приложение. Если вы этого не сделаете, изменения, внесенные вами для шрифтов, pubspec.yaml не будут видны с Hot Reload или даже Hot Restart .

     fonts:
      - family: Source Sans Pro
      fonts:
        - asset: fonts/SourceSansPro-Regular.ttf
        weight: 400
        - asset: fonts/SourceSansPro-SemiBold.ttf
        weight: 600
        - asset: fonts/SourceSansPro-Bold.ttf
        weight: 700
        - asset: fonts/SourceSansPro-Black.ttf
        weight: 900
  

Причина, по которой я указал вес под каждым шрифтом, заключается в том, что это позволяет FontWeight.w400 , например, ссылаться на обычный и FontWeight.w900 черный.

Вот как я использовал его в своем коде:

     Text("Planning",
         style: TextStyle(
         color: Color(0xFF43b3e0),
         fontFamily: "Source Sans Pro",  // <- Looks up the specified font in pubspec.yaml
         fontWeight: FontWeight.w700,    // <- uses the Bold font weight
         fontSize: 28.0),
    ),
  

Комментарии:

1. например, «android» говорит, что правильный способ указания семейства шрифтов — одинарные кавычки, но двойные тоже работают.

Ответ №3:

Чтобы установить пользовательский шрифт в текстовом поле: (Используйте его с одинарными кавычками — правильный метод)

 Text(
  'I like custom fonts',
  style: TextStyle(fontFamily: 'Vonique'),
);
  

Чтобы задать пользовательский шрифт с размером шрифта:

 Text(
  'I like custom fonts',
  style: TextStyle(
            fontFamily: 'Vonique',
            fontSize: 20.0,
         ),
);
  

Если вы хотите определить вес шрифта, вы можете определить его в файле pubspec.yaml, например, как показано ниже:

 flutter:
  fonts:
    - family: Vonique
      fonts:
        - asset: Vonique-64-Bold-Italic.ttf
          weight: 500
  

Ответ №4:

Ответ №5:

Установите это в pubspec.yaml

 flutter:
  fonts:
  - family: Quicksand
    fonts:
    - asset: assets/fonts/Quicksand-Regular.ttf
  

Ответ №6:

Вы должны определить семейство в соответствии с этим в вашем файле pubspec.yaml, тогда вы сможете легко использовать пользовательские шрифты в своем коде:

 fonts:
 - family: roboto_regular
   fonts:
     - asset: assets/fonts/Roboto-Regular.ttf
 - family: roboto_italic
   fonts:
     - asset: assets/fonts/Roboto-Italic.ttf
 - family: roboto_black
   fonts:
     - asset: assets/fonts/Roboto-Black.ttf
 - family: roboto_bold
   fonts:
     - asset: assets/fonts/Roboto-Bold.ttf
 - family: roboto_light
   fonts:
     - asset: assets/fonts/Roboto-Light.ttf
  

затем используйте это в своем коде следующим образом;-

 Text(
    "Some Text",
    overflow: TextOverflow.clip,
    maxLines: 1,
    style: TextStyle(
      fontFamily: 'roboto_bold',
      // The color must be set to white for this to work
      color: Colors.white,
      fontStyle: FontStyle.normal,
      fontWeight: FontWeight.w700,
      fontSize: 15,
    ),