私はイメージアセットの単純なリストを持っており、画面上には1つのイメージウィジェットがあります。私はsetState()を使用して、ボタンを使用して循環させます。Flutterでローカルイメージアセットを事前にロード
const List<String> _photoData = const [
"assets/generic-cover.jpg",
"assets/generic-cover2.jpg",
"assets/generic-cover3.jpg",
"assets/generic-cover4.jpg",
];
class _MyHomePageState extends State<MyHomePage> {
int _coverPhoto = 0;
void _switchCoverPhoto() {
setState(() {
_coverPhoto++;
if (_coverPhoto == _photoData.length) {
_coverPhoto = 0;
}
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Stack(
children: <Widget>[
new Image.asset (
_photoData[_coverPhoto],
fit: ImageFit.cover,
height: 600.0,
),
new Positioned (// photo toggle button
child: new IconButton(
icon: new Icon (Icons.photo),
onPressed: _switchCoverPhoto,
color: Colors.white,
),
top: 32.0,
right: 32.0,
),
]
)
);
}
最初の画像がうまく表示されます。しかし、_switchCoverPhoto()を呼び出すと、「assets/generic-cover2.jpg」が表示される前に白い点滅が表示されます。
これは単純な質問につながります:次の画像(または画像)をメモリにプリロードする簡単な方法はありますか?あらかじめフラッシュはありませんか?
See attached GIF for a loose approximation.