パッケージ、リポジトリ、アプリカテゴリを検索

screwdriver のカバー
パッケージ詳細v5.12.0

screwdriver

開発を容易かつ迅速にするために、有用な拡張機能とヘルパー関数を提供することを目指すDartパッケージです。

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
1030
いいね数
114
Pub ポイント
160

パッケージをインストール

flutter pub add screwdriver

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

Screwdriverは、複数のプラットフォームで開発をスムーズかつ迅速に進めるために役立つ拡張機能やヘルパー関数を提供するDartパッケージです。文字列操作、日付処理、null安全など、一般的なタスクに役立つユーティリティメソッドを備えており、ボイラープレートコードを削減します。開発者の生産性を最優先に設計されており、FlutterおよびDartプロジェクトにおける読みやすさと一貫性を高めます。Android、iOS、Web、macOS、Windows、Linuxをサポートしており、クロスプラットフォームアプリケーションに適しています。

用途

  • 迅速な文字列および日付ユーティリティ
  • 繰り返しコードの削減
  • クロスプラットフォーム開発
  • null セーフティの強化
  • コードの可読性を向上させる
  • プロトタイピングの高速化

主な機能

  • 広範な Dart拡張セット
  • null安全なユーティリティ関数
  • クロスプラットフォーム互換性
  • 最小限の依存関係オーバーヘッド
  • pub を通じた簡単な統合
  • 丁寧にドキュメント化されたヘルパー

適している対象

  • 生産性向上を求めるFlutter開発者
  • ユーティリティコードを標準化しようとするチーム
  • 迅速な開発を必要とするプロジェクト
  • Dart専用またはマルチプラットフォームアプリ
  • 洗練された簡潔な構文を重視する開発者

注意事項

  • チーム間で使用される場合、微妙なAPIの変更が生じる可能性があります
  • ユーティリティの拡張に限定され、完全なフレームワークではない
  • バージョンをアップグレードする際には注意深く確認が必要です
  • 複雑なビジネスロジックには適していません
  • 既存のコーディング規範と併用するのが最適です

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

banner

Screwdriver

A dart package aiming to provide useful extensions and helper functions to ease and speed up development.

Tests Code Quality Codecov Pub Version Docs

  • 📋 Well Documented
  • ⚔️ Fully Tested
  • 👌 Follows Code Quality Guidelines
  • 🦾 Production Ready
  • collection included for extra extensions.

Stats

Check out EXTENSIONS.md for a complete list of all the available extensions.

Extensions:                    322
Extension Types:               4
Helper Classes:                5
Helper Functions & Getters:    29
Typedefs:                      10
Mixins:                        2

Last Updated: Fri, Aug 28, 2026 - 04:14 PM

Stats auto generated using Github Workflow.


To checkout all the available extensions, helper functions & classes, see documentation.

Installation

  1. Add as a dependency in your project's pub spec.yaml.
dependencies:
  screwdriver: <latest_version>

Note: Screwdriver exports collection package as well. So, you don't need to add collection as a dependency in your project.

  1. Import library into your code.
import 'package:screwdriver/screwdriver.dart';
  1. Use this import for using IO extensions.
import 'package:screwdriver/screwdriver_io.dart';

A Glimpse of Screwdriver

String
'hello'.capitalized; // Hello
'   '.isBlankl // true;
'45'.toIntOrNull(); // 45
'html'.wrap('<','>'); // <html>
'1010111010001'.isBinary; // true
'test@example.com'.isEmail; // true
'abcd'.reversed; // dcba
'This is a test'.words; // ['this', 'is', 'a', 'test']
'{"name":"John"}'.parseJson(); // map: {name:John}
'#hello'.removePrefix('#'); // hello
Map
final Map<String, dynamic> map = {
  'name': 'John',
  'age': 24,
};

for(final (key, value) in map.records) {
  print('$key: $value');
}
Int
20.isDivisibleBy(5); // true
0.asBool; // false
6.twoDigits; // '06'
2020.isLeapYear; // true
10.repeat((count) => print(count));
DateTime & Duration
now().isMonday;
final DateTime fiveDaysAgo = 5.daysAgo;
final Duration nineMinutes = 9.minutes;
45.minutes.isInHours; // false
15.daysAgo < 5.days.ago; // true
20.minutes.ago >= 50.minutes.ago; // true
now().previousDay; // yesterday
10.days.ago.isBetween(15.days.ago, now()); // true
Double and Bool
randomDouble(max: 50); // random double value between 0 and 50
56.0.isWhole; // true
true.toggled; // false
false.toInt(); // 0

Scope Functions
final User user = User(name: 'John').apply((user){
  user.age = 24;
  user.email = 'john@doe.com';
});
final String age = user.run((u)=> (u.age + 20).toString());
Collections
users << User(name: 'John'); // appends user to users list
users.firstOrNull;
users.drop(5);
users.takeLast(3);
user.all((u) => u.age > 18); // returns bool
cars.groupBy((car) => car.color);
cars.count((car) => car.isPorsche);
cars.random();
cars.maxBy((car) => car.price);
cars.intersect(otherCars);
{'name': 'John'} << Pair('email','john@doe.com');
Future
postDelayed(2000,(){
  print('after 2 seconds');
});
IO
file.onModified(() => print('file modified'));
file.clear(); // flushes all the data of file
file.isEmpty;
file.appendString('hello');
file << 'some text';
file1 + file2; // appends file2 content at the end of file1
Some More
check(divider != 0);
runCaching((){
  count / 0;
});
TODO('find a way to implement this properly'); // throws UnimplementedError on invocation
Triple(45,true, 'Hello World');
user.takeIf((u) => u.age > 18)?.allowAccess();
person.takeUnless((p) => p > 18)?.areTeenagers();
final DateTime date = tomorrow;
yesterday.isInDecember;

Check out EXTENSIONS.md for a complete list of all the available extensions.

Checkout documentation for more details.

Features and bugs

Please file feature requests and bugs at the issue tracker.

Liked Screwdriver?

Show some love and support by starring the repository.

Or You can

Buy Me A Coffee

License

Copyright (c) 2020, Birju Vachhani
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its
   contributors may be used to endorse or promote products derived from
   this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

カテゴリー

依存関係

依存関係一覧 7 件

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。