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',);
  • 相关阅读:
    vue使用elementui合并table
    使用layui框架导出table表为excel
    vue使用elementui框架,导出table表格为excel格式
    前台传数据给后台的几种方式
    uni.app图片同比例缩放
    我的博客
    【C语言】取16进制的每一位
    SharePoint Solution 是如何部署的呢 ???
    无效的数据被用来用作更新列表项 Invalid data has been used to update the list item. The field you are trying to update may be read only.
    SharePoint 判断用户在文件夹上是否有权限的方法
  • 原文地址:https://www.cnblogs.com/changeMsBlog/p/11296193.html
Copyright © 2011-2022 走看看