欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flutter項(xiàng)目手勢(shì)運(yùn)用及單獨(dú)指針消歧問題解決方案

 更新時(shí)間:2022年12月23日 09:55:23   作者:黎燃  
這篇文章主要為大家介紹了Flutter項(xiàng)目手勢(shì)運(yùn)用及單獨(dú)指針消歧問題解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

對(duì)于手勢(shì)的運(yùn)用

指針表示用戶與設(shè)備屏幕交互的原始數(shù)據(jù)。有四種類型的指針事件 PointerDownEvent指針觸摸屏幕上的特定位置 PointerMoveEvent指針從屏幕上的一個(gè)位置移動(dòng)到另一個(gè)位置 PointerUpEvent指針停止觸摸屏幕 PointerCancelEvent指針的輸入事件不再針對(duì)此應(yīng)用程序(事件取消)

 Widget build(BuildContext context) {
    return new GestureDetector(
      onTap: _handleTap,
      child: new Container(
        child: new Center(
          child: new Text(
            _active ? 'Active' : 'Inactive',
            style: new TextStyle(fontSize: 32.0, color: Colors.white),
          ),
        ),
        width: 200.0,
        height: 200.0,
        decoration: new BoxDecoration(
          color: _active ? Colors.lightGreen[700] : Colors.grey[600],
        ),
      ),
    );
  }
}

當(dāng)按下指針時(shí),框架將在應(yīng)用程序上執(zhí)行_點(diǎn)擊測(cè)試_,以確定指針與屏幕相交的位置存在哪些小部件。然后,指針按下事件(以及該指針的后續(xù)事件)被分發(fā)到_命中測(cè)試_找到的最里面的小部件。從那里,這些事件將在小部件樹中彈出。這些事件將從最里面的小部件分發(fā)到小部件根路徑上的所有小部件。沒有取消或停止冒泡過程的機(jī)制。 要直接從窗口小部件層偵聽指針事件,請(qǐng)使用偵聽器窗口小部件。然而,一般來(lái)說(shuō),考慮使用手勢(shì)(如下所述)。要直接從小部件層偵聽指針事件,可以使用Listenerwidgets。

單獨(dú)指針

手勢(shì)表示可以從多個(gè)單獨(dú)指針事件(甚至多個(gè)單獨(dú)的指針)中識(shí)別的語(yǔ)義動(dòng)作(如敲擊、拖動(dòng)和縮放)。一個(gè)完整的手勢(shì)可以調(diào)度多個(gè)事件,對(duì)應(yīng)于手勢(shì)的生命周期(例如,拖動(dòng)開始、拖動(dòng)更新和拖動(dòng)結(jié)束):

class ParentWidget extends StatefulWidget {
  @override
  _ParentWidgetState createState() => new _ParentWidgetState();
}
class _ParentWidgetState extends State<ParentWidget> {
  bool _active = false;
  void _handleTapboxChanged(bool newValue) {
    setState(() {
      _active = newValue;
    });
  }
  @override
  Widget build(BuildContext context) {
    return new Container(
      child: new TapboxC(
        active: _active,
        onChanged: _handleTapboxChanged,
      ),
    );
  }
}

TaponTapDown指針已在特定位置與屏幕接觸onTapUp指針停止在特定位置接觸屏幕onTap tap事件觸發(fā)onTapCancel之前由指針觸發(fā)的onTapDown不會(huì)觸發(fā)tap事件 雙擊DoubleTap可在同一位置連續(xù)兩次快速點(diǎn)擊屏幕 長(zhǎng)按onLongPress指針可在同一位置長(zhǎng)時(shí)間與屏幕保持接觸 垂直拖動(dòng)onVerticalDragStart指針已接觸屏幕,并可能開始垂直移動(dòng)。onVerticalDragUpdate指針已與屏幕接觸并垂直移動(dòng)OnVerticalDragEnd先前與屏幕接觸且垂直移動(dòng)的指針不再與屏幕接觸,并在停止觸摸屏幕時(shí)以特定速度移動(dòng) 水平拖動(dòng)onHorizontalDragStart指針已觸摸屏幕,并可能開始水平移動(dòng)onHorizontalDragUpdate指針接觸屏幕并已水平移動(dòng)onHorizontalDragEnd指針(以前接觸屏幕并水平移動(dòng))不再接觸屏幕,并在停止觸摸屏幕時(shí)以特定速度移動(dòng) 要從控件層監(jiān)視手勢(shì),請(qǐng)使用手勢(shì)檢測(cè)器

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text(widget.title),
      ),
      body: new Center(
        child: new Text('Hello World', style: new TextStyle(fontSize: 32.0)),
      ),
    );
  }
}

如果使用“材質(zhì)組件”,大多數(shù)小部件都會(huì)響應(yīng)輕敲或手勢(shì)。例如,IconButton和FlatButton響應(yīng)按下(輕擊),ListView響應(yīng)滑動(dòng)事件以觸發(fā)滾動(dòng)。如果不使用這些小部件,但希望在單擊時(shí)具有“潑墨”效果,則可以使用InkWell。

消歧

在屏幕上的指定位置可能有多個(gè)手勢(shì)檢測(cè)器。當(dāng)指針事件流通過并試圖識(shí)別特定手勢(shì)時(shí),所有這些手勢(shì)檢測(cè)器都會(huì)監(jiān)聽指針事件流。手勢(shì)檢測(cè)器小部件確定它是哪個(gè)手勢(shì)。 當(dāng)屏幕上有多個(gè)給定指針的手勢(shì)識(shí)別器時(shí),框架通過向每個(gè)識(shí)別器添加“手勢(shì)競(jìng)爭(zhēng)場(chǎng)”來(lái)確定所需的手勢(shì)。“手勢(shì)比賽場(chǎng)”使用以下規(guī)則來(lái)確定哪個(gè)手勢(shì)獲勝 在任何時(shí)候,識(shí)別器都可以宣布失敗并離開“手勢(shì)比賽場(chǎng)”。如果“比賽場(chǎng)地”中只剩下一個(gè)標(biāo)識(shí)符,則該標(biāo)識(shí)符為獲勝者

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    //...
    Widget buttonSection = new Container(
      child: new Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
          buildButtonColumn(Icons.call, 'CALL'),
          buildButtonColumn(Icons.near_me, 'ROUTE'),
          buildButtonColumn(Icons.share, 'SHARE'),
        ],
      ),
    );
  //...
}

在任何時(shí)候,識(shí)別器都可以宣布勝利,這將導(dǎo)致勝利,而所有剩余的識(shí)別器都將失敗 例如,當(dāng)消除水平和垂直拖動(dòng)的歧義時(shí),兩個(gè)識(shí)別器在接收到指針向下事件時(shí)進(jìn)入“手勢(shì)競(jìng)爭(zhēng)場(chǎng)”。識(shí)別器觀察指針移動(dòng)事件。如果用戶將指針?biāo)揭苿?dòng)超過一定數(shù)量的邏輯像素,則水平識(shí)別器將宣布勝利,手勢(shì)將被解釋為水平拖動(dòng)。類似地,如果用戶垂直移動(dòng)超過一定數(shù)量的邏輯像素,則垂直識(shí)別器將宣布獲勝。 當(dāng)僅水平(或垂直)拖動(dòng)識(shí)別器時(shí),“手勢(shì)競(jìng)爭(zhēng)場(chǎng)”是有益的。在這種情況下,“手勢(shì)競(jìng)爭(zhēng)領(lǐng)域”中只有一個(gè)識(shí)別器,水平拖動(dòng)將立即被識(shí)別,這意味著第一個(gè)水平移動(dòng)的像素可以被視為拖動(dòng),用戶不需要等待進(jìn)一步的手勢(shì)消歧。

依賴包中的字體

如果包中定義的字體在內(nèi)部使用,則在創(chuàng)建文本樣式時(shí)還應(yīng)指定包參數(shù),如上面的示例所示。 包還可以提供字體文件,而無(wú)需輸入pubspec Yaml。這些文件應(yīng)位于包的lib/文件夾中。字體文件不會(huì)自動(dòng)綁定到應(yīng)用程序,應(yīng)用程序可以在聲明字體時(shí)選擇性地使用這些字體。假設(shè)a_包中有一個(gè)包:

 flutter:
   fonts:
     - family: Raleway
       fonts:
         - asset: assets/fonts/Raleway-Regular.ttf
         - asset: packages/my_package/fonts/Raleway-Medium.ttf
           weight: 500

family是字體的名稱??梢栽赥extStyle的fontFamily屬性中使用它 資產(chǎn)相對(duì)于pubspec yaml文件的路徑這些文件包含字體中的字形輪廓。構(gòu)建應(yīng)用程序時(shí),這些文件將包含在應(yīng)用程序的資產(chǎn)包中。 可以設(shè)置字體的粗細(xì)、傾斜和其他樣式 weight屬性指定字體的粗細(xì)。值范圍是100到900(100的倍數(shù))的整數(shù)。這些值對(duì)應(yīng)于FontWeight,可用于TextStyle的FontWeight屬性 樣式指定字體是斜體還是普通字體。相應(yīng)的值為斜體和普通值。這些值對(duì)應(yīng)于fontStyle可用于TextStyle的fontStyle TextStyle屬性

import 'package:flutter/material.dart';
const String words1 = "Almost before we knew it, we had left the ground.";
const String words2 = "A shining crescent far beneath the flying vessel.";
const String words3 = "A red flair silhouetted the jagged edge of a wing.";
const String words4 = "Mist enveloped the ship three hours out from port.";
void main() {
  runApp(new MyApp());
}
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter Fonts',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new FontsPage(),
    );
  }
}

在Flutter應(yīng)用程序中使用字體需要兩個(gè)步驟。首先在pubspec.yaml中聲明它們,以確保它們包含在應(yīng)用程序中。

以上就是Flutter項(xiàng)目手勢(shì)運(yùn)用及單獨(dú)指針消歧問題解決方案的詳細(xì)內(nèi)容,更多關(guān)于Flutter手勢(shì)運(yùn)用單獨(dú)指針消歧的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android利用Fragment實(shí)現(xiàn)Tab選項(xiàng)卡效果

    Android利用Fragment實(shí)現(xiàn)Tab選項(xiàng)卡效果

    這篇文章主要為大家詳細(xì)介紹了Android利用Fragment實(shí)現(xiàn)Tab選項(xiàng)卡效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Flutter仿釘釘考勤日歷的示例代碼

    Flutter仿釘釘考勤日歷的示例代碼

    這篇文章主要介紹了Flutter仿釘釘考勤日歷的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Kotlin編寫Android適配器Adapter

    Kotlin編寫Android適配器Adapter

    這篇文章主要為大家詳細(xì)介紹了Kotlin編寫Android適配器Adapter的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Android xmlns 的作用及其自定義實(shí)例詳解

    Android xmlns 的作用及其自定義實(shí)例詳解

    這篇文章主要介紹了 Android xmlns 的作用及其自定義實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android ViewBinding的使用詳解

    Android ViewBinding的使用詳解

    這篇文章主要介紹了Android ViewBinding的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下
    2021-04-04
  • Android Studio實(shí)現(xiàn)單選對(duì)話框

    Android Studio實(shí)現(xiàn)單選對(duì)話框

    這篇文章主要為大家詳細(xì)介紹了Android Studio實(shí)現(xiàn)單選對(duì)話框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Delphi在Android下使用Java庫(kù)的方法

    Delphi在Android下使用Java庫(kù)的方法

    這篇文章主要介紹了Delphi在Android下使用Java庫(kù)的方法,本文以Android的USB串口通訊庫(kù)為例,給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • Flutter 開發(fā)一個(gè)登錄頁(yè)面

    Flutter 開發(fā)一個(gè)登錄頁(yè)面

    登錄頁(yè)面在 App 開發(fā)中非常常見,本篇借登錄頁(yè)面的開發(fā)介紹了文本框 TextField組件的使用,同時(shí)使用文本框的裝飾屬性實(shí)現(xiàn)了個(gè)性化文本框設(shè)置。
    2021-06-06
  • Android變形(Transform)之Matrix用法

    Android變形(Transform)之Matrix用法

    Android的2D變形(包括縮放,扭曲,平移,旋轉(zhuǎn)等)可以通過Matrix來(lái)實(shí)現(xiàn),本文研究了一下;接下來(lái)就將我這倆天研究的東西和大家分享下,先來(lái)看看Matrix的用法感興趣的你可不要錯(cuò)過了哈
    2013-02-02
  • Android Jetpack組件支持庫(kù)DataBinding與ViewModel與LiveData及Room詳解

    Android Jetpack組件支持庫(kù)DataBinding與ViewModel與LiveData及Room

    Jetpack是一個(gè)由多個(gè)技術(shù)庫(kù)組成的套件,可幫助開發(fā)者遵循最佳做法,減少樣板代碼并編寫可在各種Android版本和設(shè)備中一致運(yùn)行的代碼,讓開發(fā)者精力集中編寫重要的代碼
    2022-09-09

最新評(píng)論