イメージはアプリケーション内の「assets」というフォルダに配置するのが一般的
flutter_app/assets/images/image.jpg
pubspec.yamlにassetsを追加する
flutter: assets: - assets/images/image.jpg
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:typed_data';
import 'dart:ui' as ui;
class _MyHomePageState extends State<MyHomePage>{
static ui.Image? _img = null;
static bool _flg = false;
Future<void> loadAssetImage(String fname) async {
final bd = await rootBundle.load("images/$fname");
final Uint8List u8lst = await Uint8List.view(bd.buffer);
final codec = await ui.instantiateImageCodec(u8lst);
final frameInfo = await codec.getNextFrame();
_img = frameInfo.image;
setState(()=> _flg = true);
}
@override
Widget build(BuildContext context) {
loadAssetImage('image.jpg');
return Scaffold(
backgroundColor: Color.fromARGB(255, 255,255,255),
appBar: AppBar(
title: Text('App Name', style: TextStyle(fontSize: 30.0),),
),
body:Container(
child: CustomPaint(
painter: MyPainter(_img),
),
),
);
}
}
class MyPainter extends CustomPainter {
ui.Image? _img = null;
MyPainter(this._img);
@override
void paint(Canvas canvas, Size size){
Paint p = Paint();
Offset off = Offset(50.0, 50.0);
if(_img != null){
canvas.drawImage(_img!, off, p);
}
}
@override
bool shouldRepaint(CustomPainter oldDelegate) => true;
}