Laravelのページネーションで指定したページを表示する

LaravelではEloquent queryのpaginateメソッドを使って、簡単にページネーションを実現できます。
表示するページは、クエリ文字列引数の値により自動的に決まるため、表示するページを指定する必要はありません。

$users = App\User::paginate(15);

表示するページを明示的に指定したい場合は、paginateメソッドの第4引数で指定します。

// 3ページ目を表示する
$users = App\User::paginate(15, ['*'], 'page', 3);

なお、第2引数は取得するカラム名、第3引数は表示ページのクエリ文字列です。

Flutterでホーム画面のアプリアイコンにバッジを表示する

Flutterアプリのアプリアイコンにバッジを表示する方法です。
Flutter App Badger pluginを使用します。
このプラグインは、iOS・macOS・一部のAndroidをサポートします。

インストール

flutter pub add flutter_app_badger

設定

iOSではバッチを更新するための通知権限が必要です。
ios/Runner/info.plistを編集し、以下の行を追加します。

<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>

バッチを追加する

バッジを追加するには、FlutterAppBadgerのupdateBadgeCountメソッドを使用します。

import 'package:flutter_app_badger/flutter_app_badger.dart';

FlutterAppBadger.updateBadgeCount(1);

バッジを削除する

バッジを削除するには、FlutterAppBadgerのremoveBadgeメソッドを使用します。

import 'package:flutter_app_badger/flutter_app_badger.dart';

FlutterAppBadger.removeBadge();

バッジのサポートを調べる

端末がこの機能をサポートしているかどうかを調べるには、FlutterAppBadgerのisAppBadgeSupportedメソッドを使用します。

import 'package:flutter_app_badger/flutter_app_badger.dart';

FlutterAppBadger.isAppBadgeSupported();

FlutterでFailed to find gems [“ffi”]エラー

flutterでiOSアプリをビルドすると”Ignoring ffi-1.15.5 because its extensions are not built.”エラーが発生した。

Error output from CocoaPods:
↳
    Ignoring ffi-1.15.5 because its extensions are not built. Try: gem pristine ffi --version 1.15.5

エラーメッセージにあるコマンドを実行したら、エラーになった。

% sudo gem pristine ffi --version 1.15.5
Password:
ERROR:  While executing gem ... (Gem::Exception)
    Failed to find gems ["ffi"] = 1.15.5

以下のコマンドを実行してインストールした。

% sudo gem install ffi --version 1.15.5

Building native extensions. This could take a while...
Successfully installed ffi-1.15.5
Parsing documentation for ffi-1.15.5
Installing ri documentation for ffi-1.15.5
Done installing documentation for ffi after 9 seconds
1 gem installed

Flutterアプリで通知を閉じる

受信したプッシュ通知は、通知をタップするまで残り続けます。
アプリを起動したり特定の処理を実行したりして通知が不要になっても、通知は自動的に閉じません。
不要になった通知は、プログラムから閉じなければなりません。

Flutterで通知を閉じるには、eraserパッケージを使用します。

インストール

flutter pub add eraser

すべての通知を閉じる

すべての通知を閉じるには、clearAllAppNotificationsメソッドを使用します。

import 'package:eraser/eraser.dart';

Eraser.clearAllAppNotifications();

選択した通知を閉じる

Androidの場合はtag、iOSの場合はapns-collapse-idを通知に含める必要があります。

clearAppNotificationsByTagメソッドを使用して、指定したタグの通知を閉じます。

import 'package:eraser/eraser.dart';

Eraser.clearAppNotificationsByTag('notificationTag');