プログラミング全般
正規表現:改行を含めて、複数行でマッチングする方法
JSONの構造と構文
Swift
通信関連
【Swift】Alamofireを触ってみる(async/awaitで書く)
【Swift】Alamofireでasync/awaitを使う
Flutter
文法
【Flutter】急にiosで実機デバッグが出来なくなった時に試してほしいこと
permission_handlerの使い方
Nullチェック
Flutterで「The argument type ‘Null’ can’t be assigned to the parameter type ‘String’」エラーが表示されたときの解決方法
FlutterでXFile画像を表示する方法
Flutter画像の表示方法と各形式の変換
【Flutter】端末がiOSかAndroidかを判別する
宣言時のあれこれ(lateやstaticなど)
DartからAndroid / iOS等のメソッドを呼び出したい(Flutter MethodChannel)
Flutterで使うアイコン
【Flutter】image_pickerで写真を複数選択する方法
【Flutter】関数を変数として引数で渡してみる(コールバック関数)
画像の上に指定されたpaddingに合わせて画像を表示する方法
Flutterで二次元配列のJSONをDecodeする
TextFiledでスクロールするようにする
[Flutter] Navigator.pop()したときに画面を再描画するシンプルな方法
【Flutter】下スクロールでデータを更新して表示させたい(RefreshIndicator)
【Flutter】 ListView の最後にリストを追加して、別の Widget を表示させる
【Flutter】正規表現で文字列からURLだけを取り出す
【Flutter】Dartでの文字列操作の基本と応用
【Flutter】TextFormField タップ時にピッカー(ドラムロール)を出して入力させる
【Flutter】shared_preferences を使ってローカルにデータを保存する
Flutterで値を保存したり取り出したりする
[Dart] 切り上げ、切り捨て、丸め
【Flutter】Map
【Flutter】Enum(列挙型)の使い方
【Flutter】クリップボードにコピーする
01.Null Safety
【Flutter】initState内でawaitさせる
アーキテクチャ
Flutter用のRiverpodをインストール
【Flutter】Riverpodで部分再描画のConsumer()の使い方
Flutter Riverpodの.familyについて(引数を使ったもの)
ProviderとかViewModelとかRepositoryとかDIとかMVVMとかよく分かんねぇよ!って人のために
MVVMを学んでみる
StateNotifier, StateProvider, FutureProvider, StreamProviderの使い分け
[Flutter/Riverpod] Listの変更による余計なWidgetの再描画をしない方法
【Flutter】Riverpodを使って複数画面で再描画を行う【初心者向け】
実用的なFlutter/MVVMの考え方・作り方 (Riverpod)
【riverpod】画面遷移時にStateNotifierへ値を渡す方法
【Flutter/Riverpod】画面遷移時の引数をProviderScopeのoverrideで設定する
familyについて
コード生成について
Flutter Riverpodをv1→v2 にした
StateNotifier は推奨されなくなった!
riverpod 公式ドキュメントまとめ
StateNotifierProviderで.familyを使おうとしたら沼った話
flutterの ListView.builderの注意点
TextWidget内の文字を左寄せしたい時
【Flutter】急にiosで実機デバッグが出来なくなった時に試してほしいこと
レイアウト関連
アイコン
【flutter】Columnを左寄せするには?
Listの横スクロールとか
チェックボックス
【Flutter】SliverListとかSliverGridとかのSliverの意味わかってる?
【Flutter】リストの要素を横にスライドさせたい(iPhoneのメール的な)[2022/04/20時点]
ListViewをColumnに格納する方法【Flutter】
InkWellとGestureDetectorの違いは?
CupertinoActionSheet In Flutter
ConsumerWidgetでTextFieldの画面を更新するには、プロバイダーの値を変更し、それをConsumerWidget内で監視することで実現できます。 具体的には、StateNotifierProviderなどを使用してTextFieldの値を管理するプロバイダーを作成し、TextFieldのonChangedコールバックでプロバイダーの状態を更新します。
TextField画面をConsumerWidgetで更新する手順
TextFieldの値を管理するプロバイダーを作成する:
StateNotifierProviderを使用し、String型の値を保持するプロバイダーを作成します。
StateNotifierクラスを作成し、値の更新メソッドを用意します。
ConsumerWidget内でプロバイダーを監視する:
ConsumerWidgetを使用し、ref.watch()でプロバイダーを監視します。
TextFieldのonChangedコールバック内で、ref.read()でプロバイダーの値を更新するメソッドを呼び出します。
TextFieldに初期値を設定する:
ConsumerWidget内で監視しているプロバイダーの現在の値(ref.watch()で取得)をTextFieldのcontrollerに設定します。
コード例
dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
// 1. TextFieldの値を管理するプロバイダーを作成
final textFieldProvider = StateNotifierProvider<TextFieldNotifier, String>((ref) {
return TextFieldNotifier();
});
class TextFieldNotifier extends StateNotifier<String> {
TextFieldNotifier() : super('');
void updateText(String text) {
state = text;
}
}
// 2. ConsumerWidgetでプロバイダーを監視し、TextFieldを作成
class MyTextFieldScreen extends ConsumerWidget {
const MyTextFieldScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
// プロバイダーの値を監視
final text = ref.watch(textFieldProvider);
return Scaffold(
appBar: AppBar(
title: const Text('ConsumerWidget TextField'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: TextField(
controller: TextEditingController(text: text), // 初期値を設定
onChanged: (value) {
// 値が変更されたらプロバイダーの状態を更新
ref.read(textFieldProvider.notifier).updateText(value);
},
),
),
);
}
}Flutter: Sliderのシンプルな実装
FlutterのTextを中央揃えにする
Flutterでのテキストを折り返す
[Flutter] MainAxisAlignment と CrossAxisAlignment の利用方法
【flutter初心者向け】同期の口癖「ListView.builder」
FlutterのContainerをボタンとして利用する方法
ポップアップメニューの表示 PopupMenuButton
位置情報
FlutterでGPS位置情報を取得するサンプルアプリを作ってみた
[Flutter]Flutter2系での権限(Permission)のリクエスト方法
【Flutter】permission_handlerで、許可していてもPermissionStatusがdeniedになってしまう時の対処方法(iOS)
FlutterのPopupMenuButtonとPopupMenuItemを最大限利用してみた件
GoogleMap
マーカー付きの地図の追加する
マーカー設置方法(AI回答)
住所から緯度経度取得(AI回答)
マーカーのカスタマイズ
【Flutter】GoogleMapの表示からgeolocatorで現在地を取得まで
緯度経度から2地点間の距離を求める方法とその比較
Flutter で Google Map に現在位置を表示する
【Flutter】Riverpodを使用したGoogleMap上での現在位置表示の実装
【Flutter】Google Maps 上に円や矩形でエリア表示
【Flutter/Dart】Google地図アプリを作ろう
Google Maps for Flutter not displaying Points of Interest
カメラ関連
【Flutter】Cameraライブラリで撮影した画像から高さ・横幅を取得する方法
ファイル
共有の新バージョン
FlutterでCSVファイルを生成する方法
【Flutter】テキストやファイルを共有する方法
FlutterでCSVファイルを作成し、iPhoneで共有するには、主に以下の手順とパッケージが必要です。
必要なパッケージの追加: path_provider (ファイルの保存場所を取得) と share_plus (ファイルを共有) を pubspec.yaml に追加します。
CSVデータの生成: Dartの機能を使ってCSV形式の文字列データを作成します。
ファイルの保存: path_provider を使用してアプリのドキュメントディレクトリにCSVファイルを保存します。
ファイルの共有: share_plus パッケージを使用して、保存したファイルをiPhoneの共有シート経由で他のアプリ(メール、AirDropなど)と共有します。
実装手順
1. パッケージの追加
pubspec.yaml ファイルに以下の依存関係を追加します。
yaml
dependencies:
flutter:
sdk: flutter
path_provider: ^2.0.0 # 最新バージョンを確認してください
share_plus: ^7.0.0 # 最新バージョンを確認してください
パッケージをインストールするためにflutter pub getを実行します。
2. Dartコードでの実装例
以下は、CSVファイルを作成して共有するためのサンプルコードです。
dart
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:share_plus/share_plus.dart';
import 'dart:convert'; // utf8 エンコードのために必要
class CsvShareScreen extends StatelessWidget {
const CsvShareScreen({super.key});
Future<void> _generateAndShareCsv() async {
// 1. CSVデータの生成 (例: List of Lists)
List<List<dynamic>> rows = [];
rows.add(['名前', '年齢', '都市']);
rows.add(['田中', 30, '東京']);
rows.add(['鈴木', 25, '大阪']);
// データをCSV文字列に変換
// CSV生成には、'csv'などの外部パッケージを利用するか、手動でカンマ区切りの文字列を生成する必要があります。
// 手動生成の場合、日本語などのマルチバイト文字を扱う際はUTF-8エンコードが重要です。
// 以下は手動生成の例 (簡易版)
String csv = rows.map((row) => row.join(',')).join('\n');
// CSVをUTF-8エンコードして日本語対応
final encodedCsv = utf8.encode(csv);
// 2. ファイルパスの取得と保存
final directory = await getApplicationDocumentsDirectory();
final path = directory.path;
final file = File('$path/data.csv');
await file.writeAsBytes(encodedCsv); // バイト列として書き込み
// 3. ファイルの共有
// XFile形式に変換してshare_plusに渡す
final xFile = XFile(file.path);
await Share.shareXFiles([xFile], text: 'CSVファイルを共有します');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('CSVファイル出力と共有 (iPhone)'),
),
body: Center(
child: ElevatedButton(
onPressed: _generateAndShareCsv,
child: const Text('CSVを作成して共有'),
),
),
);
}
}
iOS特有の設定(任意)
getApplicationDocumentsDirectory() で保存されたファイルはアプリのサンドボックス内にあり、他のアプリからの直接アクセスは通常できません。 iPhoneの「ファイル」アプリからファイルを確認したい場合は、Info.plist に以下の設定を追加してiTunesファイル共有を有効にすることができます。
xml
<key>UIFileSharingEnabled</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
これにより、iTunes経由や「ファイル」アプリからアプリのドキュメントフォルダにアクセス可能になります。 データベース関連
【Flutter】SQLiteでデータベースの初期設定
[Flutter] sqfliteのopenDatabase詳解
【Flutter】SQLiteでデータベースを組み込む方法
[SQL] DELETE文の基本構文
【Flutter】ローカルデータベース(sqflite)
【Flutter】SQLiteの基本的な使用方法
[SQL] UPDATE文の基本構文
【Flutter】ローカルデータベース(sqflite)
ライブラリ導入の公式ページ
sqflite
geolocator
geocoding
permission_handler
お店一覧
ARK HILLS SOUTH TOWER ROOFTOP LOUNGE 2025
aunt MIMI
Cafe 1894
GARB Tokyo
GOOD MORNING CAFE 品川シーズンテラス
kawara CAFE&KITCHEN 吉祥寺PARCO店
loger cafe
MAISON CLASSIC SALON
Merengue 渋谷店
SUZU CAFE 神南
Unagi house 志の家
果実園 リーベル 目黒店
銀座すし嘉 はなれ
Ken’s珈琲店
松庵文庫
鶏そば みた葉
ドルチェチッタ
棗
ピアノバー エスプリ
プルーカフェ
マーサー カフェ ダンロ
まぐろ 相馬水産