真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

關(guān)于fluttermenu的信息

Flutter 22: 圖解 PopupMenu 那些事兒

小菜需要處理標(biāo)題欄彈出對(duì)話(huà)框 PopupMenu 樣式, Flutter 當(dāng)然提供了一些處理方式,類(lèi)似 PopupMenuEntry 等,小菜僅就最基礎(chǔ)的使用方式進(jìn)行初步的學(xué)習(xí)和整理。

鐵西網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年開(kāi)始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

PopupMenuItem 為單個(gè) item 的彈出樣式,默認(rèn)為 48px 高,可根據(jù)需求自行定義。 item 中可以自定義需要的樣式,包括文字圖片等一系列樣式。

Tips: 若需要處理帶圖標(biāo)的樣式時(shí),官網(wǎng)提供的 Demo 是借助的 ListTile 來(lái)處理的,但是小菜測(cè)試發(fā)現(xiàn)圖標(biāo)與文字距離偏大,原因在于 ListTile 默認(rèn)左側(cè)圖標(biāo) leading 距離不可直接調(diào)整,建議用 Row 或其他方式調(diào)整。

CheckedPopupMenuItem 是一個(gè)帶有復(fù)選標(biāo)記的彈出菜單項(xiàng)。默認(rèn)高度同樣是 48px ,水平布局使用 ListTile 復(fù)選標(biāo)記是 Icons.done 圖標(biāo),顯示在 leading 位置;同時(shí)只有在狀態(tài)為選中時(shí)才會(huì)顯示圖標(biāo)。

PopupMenuDivider 是一條水平分割線(xiàn),注意數(shù)組要使用父類(lèi) PopupMenuEntry ,配合其他 item 樣式共同使用。 PopupMenuDivider 可以調(diào)整高度,但無(wú)法調(diào)整顏色,有需要的話(huà)可以進(jìn)行自定義。

PopupMenu 默認(rèn)的彈框位置都是在右上角,且會(huì)擋住標(biāo)題欄,如果有需要在其他位置彈框就需要借助 showMenu ,主要通過(guò) position 屬性定位彈框位置。

menu 的寬高與內(nèi)容相關(guān),小菜的理解是在水平和豎直方向上會(huì)將設(shè)置的 position 位置加上 menu 寬高,再與屏幕匹配,超過(guò)屏幕寬高,根據(jù) position 按照 LTRB 順序貼近屏幕邊框展示。

Tips: 如果 item 個(gè)數(shù)過(guò)多也無(wú)需擔(dān)心,F(xiàn)lutter 支持默認(rèn)超過(guò)屏幕滑動(dòng)效果。

小菜目前的學(xué)習(xí)還僅限于基本的使用,稍高級(jí)的自定義涉及較少,如果又不對(duì)的地方還希望多多指出。

flutter-動(dòng)畫(huà)

1.動(dòng)畫(huà)原理:在一段時(shí)間內(nèi)快速的多次改變UI外觀,由于人眼會(huì)產(chǎn)生視覺(jué)暫留所以最終看到的就是一個(gè)連續(xù)的動(dòng)畫(huà)。

UI的一次改變稱(chēng)為一個(gè)動(dòng)畫(huà)幀,對(duì)應(yīng)一次屏幕刷新。

FPS:幀率,每秒的動(dòng)畫(huà)幀數(shù)。

flutter動(dòng)畫(huà)分為兩類(lèi):

常見(jiàn)動(dòng)畫(huà)模式:

是一個(gè)抽象類(lèi),主要的功能是保存動(dòng)畫(huà)的值和狀態(tài)。常用的一個(gè)Animation類(lèi)是Animation double ,是一個(gè)在一段時(shí)間內(nèi)依次生成一個(gè)區(qū)間之間的值的類(lèi),可以是線(xiàn)性或者曲線(xiàn)或者其他。

可以生成除double之外的其他類(lèi)型值,如:Animation Color 或 Animation Size 。

是一個(gè)動(dòng)畫(huà)控制器,控制動(dòng)畫(huà)的播放狀態(tài),在屏幕刷新的每一幀,就會(huì)生成一個(gè)新的值。

包含動(dòng)畫(huà)的啟動(dòng)forward()、停止stop() 、反向播放 reverse()等方法,在給定的時(shí)間段內(nèi)線(xiàn)性的生成從0.0到1.0(默認(rèn)區(qū)間)的數(shù)字。

curve:描述動(dòng)畫(huà)的曲線(xiàn)過(guò)程。

curvedAnimation:指定動(dòng)畫(huà)的曲線(xiàn)。

常用Curve:

繼承自Animatable T ,表示的就是一個(gè) Animation 對(duì)象的取值范圍,只需要設(shè)置開(kāi)始和結(jié)束的邊界值(值也支持泛型)。 它唯一的工作就是定義輸入范圍到輸出范圍的映射。

例如,Tween可能會(huì)生成從紅到藍(lán)之間的色值,或者從0到255。

Tween.animate:返回一個(gè)Animation。

映射過(guò)程:

1). Tween.animation通過(guò)傳入 aniamtionController 獲得一個(gè)_AnimatedEvaluation 類(lèi)型的 animation 對(duì)象(基類(lèi)為 Animation), 并且將 aniamtionController 和 Tween 對(duì)象傳入了 _AnimatedEvaluation 對(duì)象。

2). animation.value方法即是調(diào)用 _evaluatable.evaluate(parent)方法, 而 _evaluatable 和 parent 分別為 Tween 對(duì)象和 AnimationController 對(duì)象。

3). 這里的 animation 其實(shí)就是前面的 AnimationController 對(duì)象, transform 方法里面的 animation.value則就是 AnimationController 線(xiàn)性生成的 0.0~1.0 直接的值。 在 lerp 方法里面我們可以看到這個(gè) 0.0~1.0 的值被映射到了 begin 和 end 范圍內(nèi)了。

接收一個(gè)TickerProvider類(lèi)型的對(duì)象,它的主要職責(zé)是創(chuàng)建Ticker。

防止屏幕外動(dòng)畫(huà)消耗資源。

[圖片上傳失敗...(image-115b94-1636441483468)]

過(guò)程:

回調(diào):

不使用addListener()和setState()來(lái)給widget添加動(dòng)畫(huà)。

使用AnimatedWidget,將widget分離出來(lái),創(chuàng)建一個(gè)可重用動(dòng)畫(huà)的widget,AnimatedWidget中會(huì)自動(dòng)調(diào)用addListener()和setState()

AnimatedModalBarrier、DecoratedBoxTransition、FadeTransition、PositionedTransition、RelativePositionedTransition、RotationTransition、ScaleTransition、SizeTransition、SlideTransition

如何渲染過(guò)渡,把渲染過(guò)程也抽象出來(lái):

AnimatedBuilder的示例包括: BottomSheet、 PopupMenu、ProgressIndicator、RefreshIndicator、Scaffold、SnackBar、TabBar。

MaterialPageRoute:平臺(tái)風(fēng)格一致的路由切換動(dòng)畫(huà)

CupertinoPageRoute:左右切換風(fēng)格

自定義:PageRouteBuilder

1.要?jiǎng)?chuàng)建交織動(dòng)畫(huà),需要使用多個(gè)動(dòng)畫(huà)對(duì)象(Animation)。

2.一個(gè)AnimationController控制所有的動(dòng)畫(huà)對(duì)象。

3.給每一個(gè)動(dòng)畫(huà)對(duì)象指定時(shí)間間隔(Interval)

可以同時(shí)對(duì)其新、舊子元素添加顯示、隱藏動(dòng)畫(huà).

當(dāng)AnimatedSwitcher的child發(fā)生變化時(shí)(類(lèi)型或Key不同),舊child會(huì)執(zhí)行隱藏動(dòng)畫(huà),新child會(huì)執(zhí)行執(zhí)行顯示動(dòng)畫(huà)。

希望大家支持一下,感謝

[img]

Flutter Application

flutter create myApp

if wanting to specify the developing language

flutter create -i swift -a kotlin xxapp

/br/br

flutter create -t module --org com.example my_flutter

Using the File New New Module… menu in Android Studio in your existing Android project, you can either create a new Flutter module to integrate, or select an existing Flutter module that was created previously.

If you create a new module, you can use a wizard to select the module name, location, and so on.

[圖片上傳失敗...(image-954fc0-1621912793341)]

The Android Studio plugin automatically configures your Android project to add your Flutter module as a dependency, and your app is ready to build.

[圖片上傳失敗...(image-67093c-1621912793341)]

/br/br

flutter create --template=package xxapp_package

[圖片上傳失敗...(image-b27285-1621912793341)]

please refer to:

Publishing packages

/br/br

flutter create --template=plugin xxapp_plugin

The whole project includes four main directories, and the corresponding Native codes are in the android and ios directories. Lib is the Flutter code of the plugin. Example is a complete Flutter App.

Before you add the android code, you need to make sure that the plug-in code is built once through the example project.

After building the Android apk package in the example project, you can open the Android project in the example project through Android Studio. Then you can edit the class file to add plug-in functionality. In the android directory, the IDE will generate an xxxplugin.java file for you. When you open it, you can see the following sample code:

There is a class FlutterPlugin that implements MethodCallHandler and a static function registerWith(which is retained to support for the old flutter version). In this static function, a new MethodChannel is created and an instance of FlutterPlugin is set to the MehodChannel. In other words, all the methodchannels and eventchannels in your plug-in are registered to the Host App through this function. the new API MethodCallHandler will be initialized and built in the onAttachedToEngine method and released in the onDetachedFromEngine method. In this way, the corresponding channel can be found when Flutter is called. we just need to rewrite the function onMethodCall.

IDE in the lib directory will automatically generate flutter_plugin.dart file for you. This is where the Flutter code of the plug-in is located. which is the packaging of Platform channels defined.

Running the following command to see if the plug-in can be published

flutter packages pub publish --dry-run

If there is a problem, it will output the error information in the terminal, and you need to modify it until it returns successfully. You can refer to the official documentation for specific problems.

At last, running the following command to publish the plug-in.

flutter packages pub publish

The registration of the plug-in is done automatically and doesn't need to register manually.

In MainActivity of example app:

GeneratedPluginRegistrant.class:

/br/br

/br/br

Flutter currently only supports building ahead-of-time (AOT) compiled libraries for x86_64, armeabi-v7a and arm64-v8a.

The Flutter engine has an x86 and x86_64 version. When using an emulator in debug Just-In-Time (JIT) mode, the Flutter module still runs correctly.

refer to:

/br/br

refer to:

A plugin for check SSL Pinning on request HTTP. Checks the equality between the known SHA-1 or SHA-256 fingerprint and the SHA-1 or SHA-256 of the target server.

There are two ways to verify the https certificate. Suppose the certificate format is PEM, the code like:

Another way is creating a SecurityContext when create the HttpClient:

In this way, the format of certificate must be PEM or PKCS12.

/br/br

sqflite

SQLite plugin for Flutter. Supports iOS, Android and MacOS.

/br/br

the official document


標(biāo)題名稱(chēng):關(guān)于fluttermenu的信息
URL網(wǎng)址:http://weahome.cn/article/dsoppoc.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部