アプリケーション開発ポータルサイト
ServerNote.NET
ServerNote.NET厳選キャンペーン・クーポンはこちら!
カテゴリー【FlutterAndroidiPhone/iPad
Flutterでassetsリソースファイルを使う
POSTED BY
2021-10-28

Flutterでアプリ内にファイルをあらかじめ埋め込んでおき、コードで読み込むにはassetsフォルダを使う。

assetsディレクトリの作成

左ペインのプロジェクト名を右クリック→New→Directoryとし、「assets」と入力しOK。するとトップにassetsディレクトリができるので、ここに読み込みたい任意のファイルを入れ込んでいく。

ひとまずテストで、「テストテキストファイルの中身です」とだけかかれたテキストファイルをtest.txtとして保存してassetsディレクトリに置いておく。assets/test.txt

pubspec.yamlにファイルパスを記述

置くだけではだめで、pubspec.yamlのflutter:ブロックにパスを書かないと、認識してくれない。

flutter:
  assets:
    - assets/test.txt

テキストファイル読み込み、表示

読み込みはrootBundle.loadStringで行うがこれは非同期に行われるため結果がFuruteクラスで返るので、コールバック関数と一緒に定義する。

import 'package:flutter/services.dart'; //rootBundle
import 'dart:async'; //Future

Stateウイジェットで読み込んで表示する

class _MyHomePageState extends State<MyHomePage> {

  String _assets_text = '';

  Future<String> loadAssetsTextFile(String name) async {
    return rootBundle.loadString('assets/' + name);
  }

  @override
  Widget build(BuildContext context) {
    loadAssetsTextFile('test.txt').then((text) => {
      setState(() {
        _assets_text = text;
      })
    });

    return Scaffold(
      appBar: AppBar(
        title: Text('Load assets data file test'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'Load assets data file test',
            ),
            Text(
              '$_assets_text',
            ),
          ],
        ),
      ),
    );
  }
}

画像ファイルの場合

AssetImageクラスにパスを渡せばそのままImageProviderクラスとして、Imageウイジェットの中身に使えます。

flutter:
  assets:
    - assets/test.txt
    - assets/test.png

//中略..
    Text(
              '$_assets_text',
            ),
    Image(image: AssetImage('assets/test.png')),

任意のバイナリファイルの場合

rootBundle.loadで読み込んで、Unit8List配列として返すので、あとは利用側でなんとかする。

Future<Uint8List> loadAssetsBinaryFile(String name) async {
    var data = await rootBundle.load('assets/$name');
    return data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
  }

loadAssetsBinaryFile('test.bin').then((data) => {
     // 処理
    });
国産ひのきベッドポケットコイルマットレス【自社一貫ベッド・マット製造(源ベッド)】
★源ベッド本店のみ3年保証で差別化しています★※楽天店やyahoo店では1年保証まで 自社一貫製造の圧縮しコ...READ MORE
モデルの間で話題沸騰!自宅でできる【美肌遺伝子検査】が先着300名様限定で3,000円オフ!
(1)メディアで話題!エステで高額な肌遺伝子検査が自宅でお安く・簡単に受けられる♪ (2)一人ひとりの肌老...READ MORE
犬用サプリのウィズペティから「関節の健康維持に」【毎日散歩 グルコサミン&イミダゾールペプチド】
【獣医師が認めた犬用関節サポートサプリメント「毎日散歩】 筋肉成分と軟骨成分の独自配合による愛犬のキビ...READ MORE
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【webmaster/管理人】
自営業プログラマー
ご連絡は以下アドレスまで★

☆ServerNote.NETショッピング↓
ShoppingNote
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】