美文网首页flutter
Flutter 动态加载字体

Flutter 动态加载字体

作者: 代瑶 | 来源:发表于2021-05-18 15:15 被阅读0次

    如果需要从网络上下载字体并且应用

        static Future<bool> downloadFontAndLoad(String fontFamily, String fontFamilyUrl) async {
        if (TextUtil.isEmpty(fontFamilyUrl) || TextUtil.isEmpty(fontFamilyUrl)) {
          return false;
        }
        //加载本地字体到app中
        Future<void> loadFontToApp(String path) async {
          try {
            var fontLoader = FontLoader(fontFamily);
            Future<ByteData> _byteData =  File(path).readAsBytes().then((value){
              return value.buffer.asByteData();
            });
            fontLoader.addFont(_byteData);
            await fontLoader.load();
          } catch (e) {
            print(e);
          }
        }
    
        File ttfFile = await FileUtil.getFilePath("ttf/", fontFamily);
        //如果本地已经存在这个字体,则加载本地
        if (ttfFile.existsSync()) {
          await loadFontToApp(ttfFile.path);
          return true;
        }
    
        String newTTFFile = await FileUtil.createFile2(ttfFile);
        String localFontFile = await DownFileUtil.down(fontFamilyUrl, newTTFFile); //检查是否需要本地下载字体
        await loadFontToApp(localFontFile); 
        return true;
      }
    

    关键代码
    Future<void> loadFontToApp(String path) async {
    try {
    var fontLoader = FontLoader(fontFamily);
    Future<ByteData> _byteData = File(path).readAsBytes().then((value){
    return value.buffer.asByteData();
    });
    fontLoader.addFont(_byteData);
    await fontLoader.load();
    } catch (e) {
    print(e);
    }
    }
    将字体下载到本地后,需要通过这个方法来加载字体~

    相关文章

      网友评论

        本文标题:Flutter 动态加载字体

        本文链接:https://www.haomeiwen.com/subject/ykxyjltx.html