web-dev-qa-db-fra.com

Flutter ne sélectionne pas les polices personnalisées basées sur fontWeight

Comment choisir différents poids de police sans spécifier de nouvelle famille pour chaque poids?

  fonts:
 - family: Montserrat
   fonts:
     - asset: assets/fonts/Montserrat-Regular.ttf
       weight: 100
     - asset: assets/fonts/Montserrat-Bold.ttf
       weight: 700
 - family: MontserratBold
   fonts:
     - asset: assets/fonts/Montserrat-Bold.ttf

et les widgets:

                      child: Text(
                    'TEST',
                    style: TextStyle(
                      fontSize: 17.4,
                      fontFamily: 'Montserrat',
                      fontWeight: FontWeight.w700,
                      color: Colors.black87,
                    ),
                  ),

..

                      child: Text(
                    'TEST2',
                    style: TextStyle(
                        fontSize: 17.4,
                        fontFamily: 'MontserratBold',
                        color: Colors.black87),
                  ),

Le Montserrat-Bold actuel est uniquement utilisé avec 'TEST2'. J'ai essayé d'utiliser "Packages get" dans pubspec.yaml et de redémarrer l'application.

13
Buli1212

D'après mes expériences, le système de musculation semble faire des choses intelligentes dans les coulisses. Cela dépend peut-être du ttf ou de l'appareil. Je parierais cependant que FontWeight.w900 pourrait tomber dans la police en gras.

Dans mon code, si je spécifie un poids de 100 (normal) et 200 (pour gras), la police en gras n'est pas utilisée jusqu'à ce que je demande FontWeight.w500. Je peux le dire parce que je le demande également en italique, et le ttf gras ne italique pas pour une raison quelconque quel que soit le poids. Ainsi, bien que les poids "épaississent" la police par programme, il semble que le fait de comprendre comment et pourquoi ils tombent dans une police spécifique nécessite un travail de devinette.

J'ai ensuite essayé avec 3 polices: fine, régulière et audacieuse et les ai définies à des poids raisonnables dans le pubspec.yaml de 100, 400 et 700 qui sont décrits dans les documents comme thin, normal / regular / plain et bold, et maintenant n'importe quoi ci-dessusFontWeight.w400 utilise gras.

J'espère que cela aide, ou que quelqu'un de plus compétent arrive

1
Daniel Wilson

vous devez ajouter une indentation appropriée à - family.

fonts:
  - family: Montserrat
    fonts:
      - asset: assets/fonts/Montserrat-Regular.ttf
        weight: 100
      - asset: assets/fonts/Montserrat-Bold.ttf
        weight: 700
0
parth jansari

De les docs nous obtenons cette liste de constantes:

w100 Fin, le moins épais
w200 Extra-léger
w300 Light
w400 Normal/régulier/ordinaire
w500 Medium
w600 Semi-gras
w700 Bold
w800 Extra-gras
w900 Noir, le plus épais

Ainsi, dans pubspec, vous pouvez définir votre police personnalisée comme ceci:

  fonts:
   - family: Montserrat
     fonts:
       - asset: fonts/Montserrat-Regular.ttf
       - asset: fonts/Montserrat-SemiBold.ttf
         weight: 600
       - asset: fonts/Montserrat-Bold.ttf
         weight: 700

et utilisez-le dans votre code comme ceci:

final h1 = new TextStyle(
    fontSize: 24.0, 
    fontWeight: FontWeight.w600  // semi-bold
);
0
Jannie Theunissen