【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part14 基本的なウィジェット
「基礎 から 学ぶ Flutter 」という書籍で 学習 したことを ブログでアウトプットしていこうと思います。今回は ウィジェット編 ( part14 )です。
前回
【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part13 基本的なウィジェット
引き続き、基本的なウィジェットについて学びます。
基本的なウィジェット
Image,RowImageウィジェット
loadingBuilder
ネットワークから大きな画像を取得するとき、多少時間がかかります。
とはいっても現代のネットワークにおいては大体一瞬で転送できてしまいますが🙂
loadingBuilder
プロパティは「画像取得中」と「画像取得完了」を判断できます。
取得状況によって表示を切り替えることができる頭の良いウィジェットです。
場合によっては前回のAnimatedOpacity
プロパティで実装するよりも簡単にできそうですね。
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(home: new MyApp()));
}
var ok = false;
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _State();
}
}
class _State extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('テスト中です。'),
),
// https://api.flutter.dev/flutter/widgets/Image/frameBuilder.html
// のサンプルを引用させていただきました。
body: Center(
child: Image.network(
'https://flutter.github.io/assets-for-api-docs/assets/widgets/puffin.jpg',
loadingBuilder: (
BuildContext context,
Widget child,
ImageChunkEvent? loadingProgress, // ImageChunkEventに「?」が必要です。
) {
if (loadingProgress == null) return child;
return Center(
// 画像取得完了まで丸い輪が表示されます。
child: CircularProgressIndicator(
value: loadingProgress.expectedTotalBytes != null
? loadingProgress.cumulativeBytesLoaded /
loadingProgress
.expectedTotalBytes! //expectedTotalBytesはint?型なので「!」が必要です。
: null,
),
);
},
),
),
),
);
}
}
一瞬ですが輪が表示されます!
最後に
これはとても簡単に利用できそうですね。
frameBuilder
は細やかな実装が得意なのだと思いました。
今日はここまで!
ディスカッション
コメント一覧
まだ、コメントがありません