zoukankan      html  css  js  c++  java
  • Flutter学习一

    包管理
    依赖本地包
    dependencies:
    pkg1:
    path: ../../code/pkg1

    依赖git包

    dependencies:
    pkg1:
    git:
    url: git://github.com/xxx/pkg1.git
    资源管理
    指定Assets
    flutter:
    assets:
    - assets/my_icon.png
    - assets/background.png
    Asset 变体
    在选择匹配设备分辨率图片时,会使用Asset变体
     
    加载 Assets 
    通过AssetBundle 对象访问asset
     
    加载文本assets
    1、通过直接使用package:flutter/services.dart 中的静态对象rootBundle
    2、建议使用 DefaultAssetBundle 来获取当前BuildContext的AssetBundle。 这种方法不是使用应用程序构建的默认asset bundle,而是使父级widget在运行时动态替换的不同的AssetBundle,这对于本地化或测试场景很有用.
    import 'dart:async' show Future;import 'package:flutter/services.dart' show rootBundle;
    
    Future<String> loadAsset() async {
    return await rootBundle.loadString('assets/config.json');}
    加载图片
    声明分辨率图片assets
    ../image.png
    ../Mx/image.png
    ../Nx/image.png
    ..etc
     
    主资源默认1.0 倍分辨率图片
    ../my_icon.png
    ../2.0x/my_icon.png
    ../3.0x/my_icon.png
     
    使用AssetImage类
    Widget build(BuildContext context) {
    return new DecoratedBox(
    decoration: new BoxDecoration(
    image: new DecorationImage(
    image: new AssetImage('graphics/background.png'),
    ),
    ),
    );}
    Image.asset() 直接返回一个图片widget
    Widget build(BuildContext context){
        return Image.asset('graphics/background.png')
    }
    使用依赖包中的资源图片
    依赖包my_icons, 目录结构
    • …/icons/heart.png
    • …/icons/1.5x/heart.png
    • …/icons/2.0x/heart.png
    new AssetImage('icons/heart.png", package:'my_icons')

    new Image.asset('icons/heart.png', package: 'my_icons')
    打包 assets 资源
    需要在 pubspec.yaml 文件中声明 期望的资源,它将会被打包到相应的package中。
    例如,一个名为“fancy_backgrounds”的包,可能包含以下文件:
    • …/lib/backgrounds/background1.png
    • …/lib/backgrounds/background2.png
    • …/lib/backgrounds/background3.png
    flutter:
    assets:
    - packages/fancy_backgrounds/backgrounds/background1.png
    Dart 单线程模式,
    Java OC 多线程,因为任意线程触发异常没有捕获,会终止进程退出程序
     
    异常捕获
    try/catch/finally 来捕获代码异常
     
    异常捕获和上报代码
    void collectLog(String line){
        ... //收集日志}void reportErrorAndLog(FlutterErrorDetails details){
        ... //上报错误和日志逻辑}
    
    FlutterErrorDetails makeDetails(Object obj, StackTrace stack){
        ...// 构建错误信息}
    
    void main() {
      FlutterError.onError = (FlutterErrorDetails details) {
        reportErrorAndLog(details);
      };
      runZoned(
        () => runApp(MyApp()),
        zoneSpecification: ZoneSpecification(
          print: (Zone self, ZoneDelegate parent, Zone zone, String line) {
            collectLog(line); // 收集日志
          },
        ),
        onError: (Object obj, StackTrace stack) {
          var details = makeDetails(obj, stack);
          reportErrorAndLog(details);
        },
      );}
    使用字体
    在asset 中声明
    将字体文件打包到应用中,在pubspec.yaml 中声明,然后将字体复制到指定的位置。如
    flutter:
    fonts:
    - family: Raleway
    fonts:
    - asset: assets/fonts/Raleway-Regular.ttf
    - asset: assets/fonts/Raleway-Medium.ttf
    weight: 500
    - asset: assets/fonts/Raleway-SemiBold.ttf
    weight: 600
    - family: AbrilFatface
    fonts:
    - asset: assets/fonts/abrilfatface/AbrilFatface-Regular.ttf

    使用字体

    // 声明文本样式const textStyle = const TextStyle(
    fontFamily: 'Raleway',);
    
    // 使用文本样式var buttonText = const Text(
    "Use the font for this text",
    style: textStyle,);
    Package 中的字体
    要使用Package中定义的字体,需要加上package 参数
    const textStyle = const TextStyle(
    fontFamily: 'Raleway',
    package: 'my_package', //指定包名);
    如果在package包内部使用它自己定义的字体,也应该在创建文本样式时指定package参数,如上例所示。
    一个包也可以只提供字体文件而不需要在pubspec.yaml中声明。 这些文件应该存放在包的lib/文件夹中。字体文件不会自动绑定到应用程序中,应用程序可以在声明字体时有选择地使用这些字体。假设一个名为my_package的包中有一个字体文件:
    lib/fonts/Raleway-Medium.ttf
    然后,应用程序可以声明一个字体,如下面的示例所示:
     
    flutter:
    fonts:
    - family: Raleway
    fonts:
    - asset: assets/fonts/Raleway-Regular.ttf
    - asset: packages/my_package/fonts/Raleway-Medium.ttf
    weight: 500
    lib/是隐含的,所以它不应该包含在asset路径中。
    在这种情况下,由于应用程序本地定义了字体,所以在创建TextStyle时可以不指定package参数:
    const textStyle = const TextStyle(
    fontFamily: 'Raleway',);
  • 相关阅读:
    牛客寒假6-I 导航系统
    牛客寒假6-C汉诺塔
    P1282 多米诺骨牌【dp】
    VisualStudio中C++程序输出一闪而过的解决方案
    【网络流24题】【LOJ6224】深海机器人问题(最大费用最大流)
    【网络流24题】【LOJ6013】负载平衡(环形纸牌均分,最小费最大流)
    【网络流24题】【LOJ6010】数字梯形(费用流)
    【网络流24题】【LOJ6000】搭配飞行员(二分图最大匹配,最大流Dinic)
    路由器相关
    PC启动原理
  • 原文地址:https://www.cnblogs.com/changeMsBlog/p/11296193.html
Copyright © 2011-2022 走看看