未分類
◎半透明なFloatingActionButtonを作る
・Opacity ウイジェットを使う
(一部抜粋)
Opacity(
opacity: _TSVManagerProvider.IsSelectedRow ? 1.0 : 0.3 , // 選択されていない時は半透明
child:
FloatingActionButton(
tooltip: AppLocalizations.of(context)!.editselectedrowstring,
child: const Icon(Icons.edit),
onPressed:!_TSVManagerProvider.IsSelectedRow ? null : () {
// 行が選択されていれば画面を入力ページにする
_pageControlProvider.pages = Pages.InputPage;//
},
),
),
・opacity:で半透明度を指定する。0に近いほど透明になる。
_TSVManagerProvider.IsSelectedRow が false の時は、
ボタンを半透明にして、 opacity: _TSVManagerProvider.IsSelectedRow ? 1.0 : 0.3 ,
押せないようにしている。 onPressed:!_TSVManagerProvider.IsSelectedRow ? null : () {
◎文字コードセット判別
・文字コードセット判別は難しく、「おそらくこの文字コードかな?」というレベルの判別までしかできない。
・特にUTF-16は判別困難。BOMが付いていればわかるというレベル。最終判定手段は人間の目視確認。
・最近はUTF-8を使用することが多いらしいが・・・。
・今回の例は、Shift-JIS, EUC-jp, UTF-8の判別コードを載せている。
・CharsetConverter()で使用可能な文字コードセットを返す。
・CharsetConverter()の引数はWindowsとAndroid等で変化するため、異なる戻り値を返すようにした。
(戻り値をenumで定義しておく方法もあるよ)
import 'dart:typed_data';
String DeterminCharSetWindows(Uint8List inData){
int _lentgh = inData.length;
for (int i=0; i<_lentgh; i++){
if(inData[i] >= 130 && inData[i] <= 152) return 'shift_jis';
if(inData[i] >= 161 && inData[i] <= 193) return 'euc_jp';
if(inData[i] >= 194 && inData[i] <= 207) i++;
if(inData[i] >= 208 && inData[i] <= 239) return 'utf-8';
}
return 'unknown';
}
String DeterminCharSetAndroid(Uint8List inData){
int _lentgh = inData.length;
for (int i=0; i<_lentgh; i++){
if(inData[i] >= 130 && inData[i] <= 152) return 'Shift_JIS';
if(inData[i] >= 161 && inData[i] <= 193) return 'EUC-JP';
if(inData[i] >= 194 && inData[i] <= 207) i++;
if(inData[i] >= 208 && inData[i] <= 239) return 'UTF-8';
}
return 'unknown';
}
◎Isar
インストールはターミナルで、以下のコマンドを実行する
flutter pub add isar isar_flutter_libs
flutter pub add -d isar_generator build_runner
使用時にimportする
import 'package:isar/isar.dart';
◎Flutter のアップグレード
ターミナルで以下のコマンドを実行する。
flutter upgrade