Flutter Getx 簡單記錄(純屬粘貼)

中文介紹

三大功能

一、響應式狀態管理器

這就是你的計數變量。
var name = 'Jonatas Borges';
要想讓它變得可觀察,你只需要在它的末尾加上".obs"
var name = 'Jonatas Borges'.obs;
而在UI中,當你想顯示該值并在值變化時更新頁面,只需這樣做。
Obx(() => Text("${controller.name}"));

二、路由管理
跳轉路由

Get.to(NextScreen());
Get.toNamed('/details');
進入下一個頁面,但沒有返回上一個頁面的選項(用于閃屏頁,登錄頁面等)。
Get.off(NextScreen());
進入下一個頁面并取消之前的所有路由(在購物車、投票和測試中很有用)。
Get.offAll(NextScreen());

返回

Get.back();

void gotoPage<T>(T page, {dynamic arguments}) async {
   // 通過這樣,介紹返回值 Get.back(result: value);
   // 走非Get.back(result: value)返回方式,會返回null
   var value = await Get.to(() => page, arguments: arguments);
   print("A頁面的返回值 $value");
 }
三、依賴管理

// 使用Get.put()實例化你的類,使其對當下的所有子路由可用。
final Controller c = Get.put(Controller());

// 使用Obx(()=>每當改變計數時,就更新Text()。
appBar: AppBar(title: Obx(() => Text("Clicks: ${c.count}"))),

// 你可以讓Get找到一個正在被其他頁面使用的Controller,并將它返回給你。
final Controller c = Get.find();

高級API

// 給出當前頁面的args。
Get.arguments

//給出以前的路由名稱
Get.previousRoute

// 給出要訪問的原始路由,例如,rawRoute.isFirst()
Get.rawRoute

// 允許從GetObserver訪問Rounting API。
Get.routing

// 檢查 snackbar 是否打開
Get.isSnackbarOpen

// 檢查 dialog 是否打開
Get.isDialogOpen

// 檢查 bottomsheet 是否打開
Get.isBottomSheetOpen

// 刪除一個路由。
Get.removeRoute()

//反復返回,直到表達式返回真。
Get.until()

// 轉到下一條路由,并刪除所有之前的路由,直到表達式返回true。
Get.offUntil()

// 轉到下一個命名的路由,并刪除所有之前的路由,直到表達式返回true。
Get.offNamedUntil()

//檢查應用程序在哪個平臺上運行。
GetPlatform.isAndroid
GetPlatform.isIOS
GetPlatform.isMacOS
GetPlatform.isWindows
GetPlatform.isLinux
GetPlatform.isFuchsia

//檢查設備類型
GetPlatform.isMobile
GetPlatform.isDesktop
//所有平臺都是獨立支持web的!
//你可以知道你是否在瀏覽器內運行。
//在Windows、iOS、OSX、Android等系統上。
GetPlatform.isWeb


// 相當于.MediaQuery.of(context).size.height,
//但不可改變。
Get.height
Get.width

// 提供當前上下文。
Get.context

// 在你的代碼中的任何地方,在前臺提供 snackbar/dialog/bottomsheet 的上下文。
Get.contextOverlay

// 注意:以下方法是對上下文的擴展。
// 因為在你的UI的任何地方都可以訪問上下文,你可以在UI代碼的任何地方使用它。

// 如果你需要一個可改變的高度/寬度(如桌面或瀏覽器窗口可以縮放),你將需要使用上下文。
context.width
context.height

// 讓您可以定義一半的頁面、三分之一的頁面等。
// 對響應式應用很有用。
// 參數: dividedBy (double) 可選 - 默認值:1
// 參數: reducedBy (double) 可選 - 默認值:0。
context.heightTransformer()
context.widthTransformer()

/// 類似于 MediaQuery.of(context).size。
context.mediaQuerySize()

/// 類似于 MediaQuery.of(context).padding。
context.mediaQueryPadding()

/// 類似于 MediaQuery.of(context).viewPadding。
context.mediaQueryViewPadding()

/// 類似于 MediaQuery.of(context).viewInsets。
context.mediaQueryViewInsets()

/// 類似于 MediaQuery.of(context).orientation;
context.orientation()

///檢查設備是否處于橫向模式
context.isLandscape()

///檢查設備是否處于縱向模式。
context.isPortrait()

///類似于MediaQuery.of(context).devicePixelRatio。
context.devicePixelRatio()

///類似于MediaQuery.of(context).textScaleFactor。
context.textScaleFactor()

///查詢設備最短邊。
context.mediaQueryShortestSide()

///如果寬度大于800,則為真。
context.showNavbar()

///如果最短邊小于600p,則為真。
context.isPhone()

///如果最短邊大于600p,則為真。
context.isSmallTablet()

///如果最短邊大于720p,則為真。
context.isLargeTablet()

///如果當前設備是平板電腦,則為真
context.isTablet()

///根據頁面大小返回一個值<T>。
///可以給值為:
///watch:如果最短邊小于300
///mobile:如果最短邊小于600
///tablet:如果最短邊(shortestSide)小于1200
///desktop:如果寬度大于1200
context.responsiveValue<T>()
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容