搜索插件、代码仓与 APP 分类

插件详情v4.1.0

selector

支持多种类型的平台选择器,用于编写函数式编程。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
58
喜欢数
22
Pub 分数
160

安装插件

flutter pub add selector

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个平台无关的选择器包,支持多种数据类型,旨在在Flutter应用中启用函数式编程模式。它提供了一种简洁、可组合的方式来跨平台管理状态和推导值,提升代码的可读性和可维护性。该包使用Dart构建,可无缝集成到Flutter项目中,并支持所有主要平台,包括Android、iOS、Web、macOS、Windows和Linux。该包强调类型安全和函数式范式,以实现高效的state处理。

适合场景

  • 复杂UI中的状态推导
  • 函数式响应式编程
  • 跨平台状态管理
  • 选择逻辑的可重用性
  • 简化派生状态计算
  • 基于流的值选择

主要特点

  • 多类型支持
  • 函数式编程风格
  • 平台无关设计
  • 类型安全的选择
  • 可组合的选择器
  • 内置平台兼容性

适合对象

  • 使用函数式编程模式的开发者
  • 寻求可重用状态逻辑的团队
  • 跨平台 Flutter 应用
  • 需要复杂状态推导的应用程序
  • 强调代码整洁性和可测试性的项目

使用建议

  • 需要理解函数式编程
  • 可能为初学者引入学习曲线
  • 最好与状态管理解决方案一起使用
  • 仅限 Dart/Flutter 生态系统
  • 不适用于简单的状态存储

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Selector

Multi-type support Platform Selector for Flutter. This library helps you write platform-specific code in a clean and functional way.

Features

  • Basic Selector (selector): Choose a value based on the current platform (Android, iOS, macOS, Windows, Linux, Fuchsia, Web). All platform parameters are required. Throws UnsupportedError if the platform is not identified.
  • Optional Selector (optionalSelector): Similar to selector, but platform parameters are optional. Returns null if the current platform's value is not provided or if the platform is unidentified.
  • Device Selector (deviceSelector): Select a value based on device type (mobile, desktop, web). All device type parameters are required. Throws UnsupportedError if the device type is not identified.
  • Optional Device Selector (optionalDeviceSelector): Similar to deviceSelector, but device type parameters are optional. Returns null if the current device type's value is not provided or if the device type is unidentified.
  • OrElse Selector (selectOrElse): Provides a fallback orElse value if the current platform's value is not provided.
  • Query (isMobile, isDesktop): Convenient getters to check if the current device is mobile or desktop.

Usage

Basic selector (selector)

Use selector when you need to provide a value for every supported platform.

import 'package:selector/selector.dart';

String message = selector(
      web: 'Hello Web!',
      android: 'Hello Android!',
      ios: 'Hello iOS!',
      fuchsia: 'Hello Fuchsia!',
      linux: 'Hello Linux!',
      macos: 'Hello macOS!',
      windows: 'Hello Windows!',
);
print(message); // e.g., "Hello Android!" on an Android device
Optional selector (optionalSelector)

Use optionalSelector when you only need to provide values for a subset of platforms. If the current platform's value is not provided, it returns null.

import 'package:selector/selector.dart';

String? specialMessage = optionalSelector(
      android: 'Special message for Android!',
      ios: 'Special message for iOS!',
);
print(specialMessage); // "Special message for Android!" on Android, null on macOS
Device selector (deviceSelector)

Use deviceSelector to differentiate between mobile, desktop, and web environments.

import 'package:selector/selector.dart';

String deviceType = deviceSelector(
      mobile: 'This is a mobile device.',
      desktop: 'This is a desktop device.',
      web: 'This is a web browser.',
);
print(deviceType); // e.g., "This is a mobile device." on an iOS phone
Optional Device selector (optionalDeviceSelector)

Similar to deviceSelector, but device type parameters are optional. Returns null if the current device type's value is not provided.

import 'package:selector/selector.dart';

String? specificDeviceMessage = optionalDeviceSelector(
      mobile: 'Mobile specific UI.',
      web: 'Web specific UI.',
);
print(specificDeviceMessage); // "Mobile specific UI." on Android, null on Windows desktop
OrElse selector (androidOrElse, iosOrElse, etc.)

Use these platform-specific orElse functions for direct, explicit choices.

import 'package:selector/selector.dart';

String admobKey = androidOrElse('android-key', 'iOS-key');
String iosPreferredKey = iosOrElse('iOS-key', 'android-key');
String mobileSpecific = mobileOrElse('mobile_value', 'default_value');
String desktopSpecific = desktopOrElse('desktop_value', 'default_value');
String webSpecific = webOrElse('web_value', 'default_value');

Alternatively, use the more flexible selectOrElse for multiple platform options:

import 'package:selector/selector.dart

String apiKey = selectOrElse(
      android: 'YOUR_ANDROID_API_KEY',
      ios: 'YOUR_IOS_API_KEY',
      orElse: 'DEFAULT_API_KEY', // Used if platform is not Android or iOS
);
print(apiKey); // "YOUR_ANDROID_API_KEY" on Android, "DEFAULT_API_KEY" on Windows
Query

Convenient getters to check the device type.

import 'package:selector/selector.dart';

print('isDesktop: $isDesktop'); // true if on Windows, Linux, macOS
print('isMobile: $isMobile');   // true if on Android, iOS, Fuchsia

所属分类

源码仓库

使用此插件的项目

暂无相关数据。