首页 > 其他分享 >flutter入门实战——文件读取和写入

flutter入门实战——文件读取和写入

时间:2023-04-22 21:34:54浏览次数:33  
标签:return 读取 写入 final savedValue file path dart flutter

问题背景

本文将介绍flutter中如何读取文件内容以及保存内容到文件。

问题分析

先直接上效果: 1682168762790.gif

问题解决

话不多说,直接上代码。 main.dart文件,代码如下:

import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';

void main() {
  runApp(
    MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Write to File',
      home: HomePage(storage: IntStorage()),
    ),
  );
}

class IntStorage {
  Future<String> get _localPath async {
    final directory = await getApplicationDocumentsDirectory();
    print(directory.path);
    return directory.path;
  }

  Future<File> get _localFile async {
    final path = await _localPath;
    return File('$path/counter.txt');
  }

  /**
   * 读取文件内容
   */
  Future<int> readCounter() async {
    try {
      final file = await _localFile;
// Read the file
      final contents = await file.readAsString();
      return int.parse(contents);
    } catch (e) {
// If encountering an error, return 0
      return 0;
    }
  }

  /**
   * 写入文件
   */
  Future<File> writeCounter(int counter) async {
    final file = await _localFile;
// Write the file
    return file.writeAsString('$counter');
  }
}

class HomePage extends StatefulWidget {
  const HomePage({required this.storage});

  final IntStorage storage;

  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  int count = 0;
  int savedValue = 0;

  @override
  void initState() {
    super.initState();
    widget.storage.readCounter().then((value) {
      setState(() {
        savedValue = value;
      });
    });
  }

  Future<File> _incrementCounter() {
    setState(() {
      count++;
      savedValue++;
    });
// Write the variable as a string to the file.
    return widget.storage.writeCounter(savedValue);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Write to file'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'Count of button presses in disk $savedValue time${savedValue == 1 ? '' : 's'}.',
              style: TextStyle(fontSize: 22),
            ),
            Text('Button pressed $count time${count == 1 ? '' : 's'}.',
                style: TextStyle(fontSize: 22)),
            TextButton(
                onPressed: () {
                  setState(() {
                    count = 0;
                  });
                },
                child: Text("Refresh"))
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

问题总结

本文介绍了flutter中如何读取文件内容以及保存内容到文件中,有兴趣的同学可以进一步深入研究。

标签:return,读取,写入,final,savedValue,file,path,dart,flutter
From: https://blog.51cto.com/baorant24/6215558

相关文章

  • 【教程】在运行WeiPeiYang - Flutter项目时可能遇到的问题 (持续更新)
    在运行WeiPeiYang-Flutter项目时可能遇到的问题前言:本文目前的环境要求Flutter:2.8.0Dart:2.15.0保证从如下的地址克隆Q:打开项目之后发现没有Flutter的lib等文件夹确保在AndroidStudio内安装了Flutter插件,具体在File-Settings-Plugins内注意安装Flutter......
  • Bootstrap Table表格中存放下拉框,读取数据填充到下拉框
    初学Bootstarp,个人感觉一个功能非常强大的前端框架,由于学习的路途也不是一番风顺的,难免会遇到问题,将遇到的问题整理,可以时常看看,加深记忆。最近做表格需要在表格中加入<select>标签,将数据填充到下拉框,无奈搞了好几个小时也没有成功,最后经过请教身边的大佬,得以解决。代码如下:htt......
  • 使用 FileWriter 逐行写入文本
    importjava.io.BufferedWriter;importjava.io.FileWriter;importjava.io.IOException;publicclassWriteToFile{publicstaticvoidmain(String[]args){try(FileWriterwriter=newFileWriter("example.txt");BufferedWriterbuffer......
  • 从 aws 读取一个文件
    useclap::{Arg,ArgAction,Command};usefuser::{BackgroundSession,MountOption,Session};usemountpoint_s3::fuse::S3FuseFilesystem;usemountpoint_s3::S3FilesystemConfig;usemountpoint_s3_client::{S3ClientConfig,S3CrtClient};usemountpoint_s3_crt::co......
  • Flutter组件化开发方案
    原文地址zhuanlan.zhihu.comFlutter组件化开发方案残枫cps​目录收起前言1.存在的问题2.改进点3.从PlatformChannel说起4.FlutterPlugin5.Pub6.PrivatePub7.Flutter工程结构8.开发流程总结原文地址juejin.cn前言前面讲了Flutter和Native的混合开发模式,Flutter作为......
  • 读取txt文件内容两两结合,存储为dat文件
    下面是一个简单的示例程序,演示如何读取一个txt文件的内容,将每两行结合成一行,并将结果写入一个dat文件中:pythonCopycodewithopen('input.txt','r')asinput_file:withopen('output.dat','w')asoutput_file:#逐行读取输入文件内容forline_number,lineinenumerate......
  • Python pth 文件写入 getshell 或权限维持
    今天看到Y4er师傅写的文章,我这里简单学习了一下:https://y4er.com/posts/python-pth-file-write-getshell/概述python的site模块支持"Site-specificconfigurationhook"的功能,这个功能点本身是用来将特定路径加入模块搜索路径。该模块在初始化期间自动导入。sys.prefix......
  • 一统天下 flutter - widget 选择类: showDatePicker()/showTimePicker/CalendarDatePi
    源码https://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-widget选择类:showDatePicker()/showTimePicker/CalendarDatePicker-日期选择和时间选择示例如下:lib\widget\selection\time_picker.dart/**showDatePicker()/showTimePicker/Calenda......
  • 通过fastaread读取DNA序列并进行检测matlab仿真
    1.算法描述fastareadfastaread函数是matlab生物信息学工具箱内置的一个函数,给我们的使用上带来了巨大的方便。对于基因DNA序列,转录RNA序列和表达蛋白序列的读取非常方便。使用语法为:p53nt=fastaread('p53nt.txt')%p53nt.txt为fasta格式存储序列的文件返回的p53nt......
  • 使用SAX读取XML文件--(SAX的基础语法练习)
    SAX的基本知识:XML的SAX解析: DOM解析原理:一次性把XML文档加载进内存,然后在内存中构建Document树,对内存要求比较高。       DOM解析缺点:不适合读取大容量的XML文件,容易导致内存溢出。 SAX解析原理:加载一点,读取一点,处理一点,对内存要求比较低。  SAX解析工具:Sun公司提......