前提・実現したいこと
Flutterを使って写真を撮影し、撮影した写真のファイル名を変更する機能を作成したいです。
写真の撮影する部分は実装できています。
ファイル名変更部分に関しては、名前を変更するためにrenameSync()
を使って実装したのですが、ファイル名が変更されているように見えず、詰まっている状態です。
該当のソースコード
Dart
1/* 2名前を変更する処理 3*/ 4Future<void> sendImage(XFile xfile) async { 5 File file = File(xfile.path); //renameSyncを使うためにXFileからFileに変換 6 //新しい名前(Path)を準備 7 String dir = path.dirname(file.path); 8 String newPath = path.join(dir, 'test.jpg'); 9 print('NewPath: ${newPath}'); 10 print('rename前: ${file.path}'); 11 await file.renameSync(newPath); //名前の変更 12 print('rename後: ${file.path}'); //変更されているか確認するためにprint 13} 14 15/* 16写真撮影ボタンが押された時の処理 17*/ 18void onTakePictureButtonPressed() async { 19 // 写真を撮影する 20 XFile? xfile = await takePicture(); 21 if (mounted) { 22 setState(() { 23 imageFile = xfile; 24 videoController?.dispose(); 25 videoController = null; 26 }); 27 } 28 // 写真を撮影できたら、sendImage関数を呼び出す 29 if (xfile != null) { 30 await sendImage(xfile); 31 } 32}
出力結果
二か所あるprint文の出力結果は以下のようになっており、rename後のファイル名が変更されていないように見えます。
NewPath: /data/user/0/com.example.camera_example/cache/test.jpg rename前: /data/user/0/com.example.camera_example/cache/CAP6899748816700081333.jpg rename後: /data/user/0/com.example.camera_example/cache/CAP6899748816700081333.jpg
参考にしたサイト
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。