最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter框架解決盒約束widget和assets里加載資產(chǎn)技術(shù)

 更新時間:2022年12月23日 09:31:35   作者:黎燃  
這篇文章主要為大家介紹了Flutter框架解決盒約束widget和assets里加載資產(chǎn)技術(shù)運用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

盒約束

flutter:
  assets:
    - assets/my_icon.png
    - assets/background.png

在Flutter中,小部件由其底層RenderBox對象渲染。渲染框受其父對象的約束,并在這些約束下調(diào)整自身大小。約束包括最小寬度、最大寬度和高度;尺寸由特定的寬度和高度組成。 通常,根據(jù)小部件如何處理其約束,有三種類型的框: 盡可能大。例如,“Center”和“ListView”的渲染框 遵循子部件的大小。例如,“變換”和“不透明度”渲染框。 指定尺寸。例如,圖像和文本的渲染框 一些小部件(如Container)將根據(jù)構(gòu)造函數(shù)參數(shù)而變化。默認情況下,容器占用盡可能多的空間,但如果為其指定寬度,它將采用指定的值。

import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;
Future<String> loadAsset() async {
  return await rootBundle.loadString('assets/config.json');
}

其他,如行和列(彈性框),將根據(jù)給它們的約束而變化,如下面的“flex”部分所述。 這些約束有時是“緊”的,這意味著它們不會為渲染框留出空間來確定其自身的大?。ɡ纾绻钚挾群妥畲髮挾认嗤?,即寬度很窄)。主要示例是App小部件,它是RenderView類中包含的一個小部件:應用程序構(gòu)建函數(shù)返回的子小部件的渲染框被分配了一個約束,迫使它精確地填充應用程序的內(nèi)容區(qū)域(通常是整個屏幕)。Flutter中的許多框,特別是那些只包含一個子控件的框,會將其約束傳遞給其子控件。這意味著,如果在應用程序渲染樹的根處嵌套一些框,則所有子節(jié)點都受這些渲染框的約束。 有些框是放松的,有“最大”約束,但沒有“最小”約束。例如,中心。

 new AssetImage('icons/heart.png', package: 'my_icons')

文本輸入widget

class ExampleWidget extends StatefulWidget {
  ExampleWidget({Key key}) : super(key: key);
  @override
  _ExampleWidgetState createState() => new _ExampleWidgetState();
}

TextField是最常用的文本輸入小部件 默認情況下,TextField具有下劃線裝飾。通過將InputDecoration設(shè)置為裝飾屬性,可以添加標簽、圖標、提示文本和錯誤文本。要完全刪除裝飾(包括下劃線和為標簽保留的空間),請將裝飾明確設(shè)置為空白。

TextFormField包裝一個TextField并將其集成到表單中。需要提供一個驗證函數(shù)來檢查用戶的輸入是否滿足某些限制(例如,電話號碼),或者在希望將TextField與其他FormField集成時使用TextFormField。

class _ExampleWidgetState extends State<ExampleWidget> {
  final TextEditingController _controller = new TextEditingController();
  @override
  Widget build(BuildContext context) {
    return new Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        new TextField(
          controller: _controller,
          decoration: new InputDecoration(
            hintText: 'Type something',
          ),
        ),
        new RaisedButton(
          onPressed: () {
            showDialog(
              context: context,
              child: new AlertDialog(
                title: new Text('What you typed'),
                content: new Text(_controller.text),
              ),
            );
          },
          child: new Text('DONE'),
        ),
      ],
    );
  }
}

assets

資產(chǎn)部分的顫振部分指定應用程序中應包含的文件。每個資產(chǎn)都由相對于pubspec.yaml文件位置的顯式路徑標識。資產(chǎn)的申報順序無關(guān)緊要。資產(chǎn)的實際目錄可以是任何文件夾(本例中為資產(chǎn))。 在構(gòu)建過程中,F(xiàn)lutter將資產(chǎn)放在一個稱為資產(chǎn)包的特殊歸檔中,應用程序可以在運行時讀取該歸檔。 資產(chǎn)變體 構(gòu)建過程支持資產(chǎn)變體的概念:不同版本的資產(chǎn)可以在不同的上下文中顯示。當在pubspec.yaml的assets部分中指定資產(chǎn)路徑時,在構(gòu)建過程中,將在相鄰子目錄中找到任何同名文件。然后,這些文件將與指定的資產(chǎn)一起包含在資產(chǎn)包中。

import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;
Future<String> loadAsset() async {
  return await rootBundle.loadString('assets/config.json');
}

加載資產(chǎn)

應用程序可以通過AssetBundle對象訪問其資產(chǎn)。 有兩種主要方法允許從資產(chǎn)包加載字符串/文本(loadString)或圖像/二進制(load)。 加載文本資源 每個Flutter應用程序都有一個rootBundle對象,可以輕松訪問主資源包。可以直接使用包中的全局靜態(tài)rootBundle對象:flutter/services。部件以加載資產(chǎn)。

但是,建議使用DefaultAssetBundle獲取當前BuildContext的AssetBundle。此方法不使用應用程序構(gòu)建的默認資產(chǎn)捆綁包,但允許父小部件在運行時替換不同的資產(chǎn)捆綁包(這對于本地化或測試場景非常有用)。

 new AssetImage('icons/heart.png', package: 'my_icons')

通常,可以使用DefaultAssetBundle。of()從應用程序運行時加載資產(chǎn)(如JSON文件)。 可以使用rootBundle直接在Widget上下文外加載這些資產(chǎn),或者當AssetBundle的句柄不可用時,

Widget build(BuildContext context) {
  // ...
  return new DecoratedBox(
    decoration: new BoxDecoration(
      image: new DecorationImage(
        image: new AssetImage('graphics/background.png'),
        // ...
      ),
      // ...
    ),
  );
  // ...
}

以上就是Flutter框架解決盒約束widget和assets里加載資產(chǎn)技術(shù)的詳細內(nèi)容,更多關(guān)于Flutter解決盒約束widget assets的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android實現(xiàn)圖像灰度化、線性灰度變化和二值化處理方法

    Android實現(xiàn)圖像灰度化、線性灰度變化和二值化處理方法

    這篇文章主要介紹了Android實現(xiàn)圖像灰度化、線性灰度變化和二值化處理方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • Android檢查手機網(wǎng)絡狀態(tài)及網(wǎng)絡類型的方法

    Android檢查手機網(wǎng)絡狀態(tài)及網(wǎng)絡類型的方法

    這篇文章主要介紹了Android檢查手機網(wǎng)絡狀態(tài)及網(wǎng)絡類型的方法,涉及Android檢測手機網(wǎng)絡狀態(tài)的技巧,需要的朋友可以參考下
    2015-04-04
  • Android編程實現(xiàn)基于局域網(wǎng)udp廣播自動建立socket連接的方法

    Android編程實現(xiàn)基于局域網(wǎng)udp廣播自動建立socket連接的方法

    這篇文章主要介紹了Android編程實現(xiàn)基于局域網(wǎng)udp廣播自動建立socket連接的方法,涉及Android使用udp廣播實現(xiàn)socket通訊的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Flutter使用Android原生播放器詳解

    Flutter使用Android原生播放器詳解

    這篇文章主要介紹了Flutter使用Android原生播放器,自己寫Flutter也有一段時間了,剛好最近公司的項目想在PC端重寫一個,就想著用Flutter實現(xiàn)試一試
    2023-02-02
  • Android 通知欄的使用方法

    Android 通知欄的使用方法

    不同版本通知欄的創(chuàng)建方式不盡相同,當前官方推薦使用 NotificationCompat 相關(guān)的API,兼容到Android 4.0,但是部分新功能,比如內(nèi)嵌回復操作,舊版本是無法支持的。
    2021-05-05
  • Android 代碼JIT友好度檢測工具

    Android 代碼JIT友好度檢測工具

    本文主要介紹一個Android代碼JIT友好度檢測工具,這里對JIT工具的資料做了一下整理,有需要的小伙伴可以參考下
    2016-08-08
  • Android刮刮卡實現(xiàn)原理與代碼講解

    Android刮刮卡實現(xiàn)原理與代碼講解

    這篇文章主要為大家詳細介紹了Android刮刮卡實現(xiàn)原理、實現(xiàn)原理步驟以及代碼講解,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Android控件之Gallery用法實例分析

    Android控件之Gallery用法實例分析

    這篇文章主要介紹了Android控件之Gallery用法,以完整實例形式較為詳細的分析了Gallery控件實現(xiàn)圖像顯示的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • OKHttp使用詳解

    OKHttp使用詳解

    OkHttp 是一套處理 HTTP 網(wǎng)絡請求的依賴庫,由 Square 公司設(shè)計研發(fā)并開源,目前可以在 Java 和 Kotlin 中使用,這篇文章主要介紹了OKHttp詳解,需要的朋友可以參考下
    2024-01-01
  • 安卓GET與POST網(wǎng)絡請求的三種方式

    安卓GET與POST網(wǎng)絡請求的三種方式

    今天小編就為大家分享一篇關(guān)于安卓GET與POST網(wǎng)絡請求的三種方式,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評論

吉水县| 综艺| 南郑县| 渭南市| 定西市| 彭水| 克拉玛依市| 靖安县| 陆川县| 长沙市| 大竹县| 高台县| 汉沽区| 九龙城区| 朝阳区| 鄂托克旗| 绥化市| 葫芦岛市| 彭水| 久治县| 监利县| 乌兰察布市| 仙桃市| 浑源县| 新泰市| 曲阳县| 新郑市| 自治县| 南召县| 区。| 普陀区| 宁津县| 宾川县| 巴林左旗| 雷州市| 乃东县| 隆林| 嵊州市| 越西县| 冕宁县| 桃源县|