Flutter如何添加文件读写

注我,一起成长,一起变强。

1.Flutter文件读写

Flutter中文件读写是一个常见的操作,可以用于将数据保存到设备上的文件中,或者从文件中读取数据;

2.示例代码


import 'dart:io';

import 'package:base_demo/common/file_mgr.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;

class FilePage extends StatefulWidget {
  final String title;
  const FilePage({super.key, required this.title});

  @override
  State<FilePage> createState() => _FilePageState();
}

class _FilePageState extends State<FilePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.start,
        children: [
          FutureBuilder(
              future: _readTxt(),
              builder: (context, snapshot) {
                if (snapshot.hasError) {
                  return Text('Error:${snapshot.error}');
                } else if (snapshot.hasData) {
                  return Text('txt文件内容:${snapshot.data}');
                }
                return const Text('txt文件内容:正在加载');
              }),
          ElevatedButton(
              onPressed: () {
                _writeTxt();
              },
              child: const Text('write from txt')),
        ],
      ),
    );
  }

  Future<String> _readTxt() async {
    try {
      String txtContent = await rootBundle.loadString('assets/txt/test.txt');
      debugPrint('txtContent:$txtContent');
      return txtContent;
    } catch (e) {
      debugPrint('_writeTxt:$e');
      return '';
    }
  }

  Future<void> _writeTxt() async {
    try {
      const String data = 'Hello,World! /n测试';
      final directory = await FileMgr.instance.getTemporaryDirectoryPath();
      debugPrint('directory:$directory');
      final file = File('$directory/test.txt');
      await file.writeAsString(data);
    } catch (e) {
      debugPrint('_writeTxt:$e');
    }
  }
}

3.效果

Flutter如何添加文件读写

目录情况见下图

Flutter如何添加文件读写


4.小结

  • • 使用FutureBuilder通过_readTxt来异步加载数据,并显示。

  • • 使用_writeTxt向应用目录写入数据,因assets目录是只读的。

  • • 在iOS/Android移动设备上,注意权限处理


原文始发于微信公众号(客户端全栈技术养成记):Flutter如何添加文件读写

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/288113.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!