I would like to use a placeholder image file that I\'ve added to my code as \"assets/placeholder.png\"
, but I\'m getting a File not found error. This is how I\
In dart Uint8List is equal to byte[].
Create one function and pass file path, It will return Bytes.
Future<Uint8List> _readFileByte(String filePath) async {
Uri myUri = Uri.parse(filePath);
File audioFile = new File.fromUri(myUri);
Uint8List bytes;
await audioFile.readAsBytes().then((value) {
bytes = Uint8List.fromList(value);
print('reading of bytes is completed');
}).catchError((onError) {
print('Exception Error while reading audio from path:' +
onError.toString());
});
return bytes;
}
Now call the function in to get bytes of file.
try{
Uint8List audioByte;
String myPath= 'MyPath/abc.png';
_readFileByte(myPath).then((bytesData) {
audioByte = bytesData;
//do your task here
});
} catch (e) {
// if path invalid or not able to read
print(e);
}
If you want base64String then use below code:
String audioString = base64.encode(audioByte);
for base64 import 'dart:convert';
I hope it will help!
With Flutter environment, you have to use AssetBundle
if you want to access to your assets (https://flutter.io/assets-and-images/).
import 'package:flutter/services.dart' show rootBundle;
ByteData bytes = await rootBundle.load('assets/placeholder.png');
Here is an example to read file byte by byte:
import 'dart:io';
void main(List<String> arguments) {
readFileByteByByte().then((done) {
print('done');
});
print('waiting...');
print('do something else while waiting...');
}
Future<bool> readFileByteByByte() async {
//final fileName = 'C:\\code\\test\\file_test\\bin\\main.dart'; // use your image file name here
final fileName = Platform.script.toFilePath(); //this will read this text file as an example
final script = File(fileName);
final file = await script.open(mode: FileMode.read);
var byte;
while (byte != -1) {
byte = await file.readByte();
if (byte == ';'.codeUnitAt(0)) { //check if byte is semicolon
print(byte);
}
}
await file.close();
return (true);
}