flutter 文件操作

添加文件操作库

打开pubspec.yaml文件,在dependencies下添加path_provider依赖,点击Pub get(或通过命令 flutter pub add path_provider )获取依赖

dependencies:
  flutter:
    sdk: flutter
    
  cupertino_icons: ^1.0.2
  english_words: ^4.0.0
  path_provider: ^2.0.11  //注意空格缩进

如果依赖中出现gradle等下载不下来,找到External Libraries下的Flutter Plugins 目录下的path_provider_android-2.0.14,找到android下的build.gralde,添加阿里云镜像、修改gradle版本和本地运行项目一直,如下:

buildscript {
    repositories {
//        google()
        mavenCentral()
        maven{ url 'https://maven.aliyun.com/repository/google'}
        maven { url 'https://jitpack.io' }
        maven { url "https://s01.oss.sonatype.org/content/groups/public" }
        maven { url 'https://maven.aliyun.com/repository/central' }
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { url "https://maven.aliyun.com/repository/public" }
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:7.1.3'  //修改版本
    }
}

rootProject.allprojects {
    repositories {
//        google()
        mavenCentral()
        maven{ url 'https://maven.aliyun.com/repository/google'}
        maven { url 'https://jitpack.io' }
        maven { url "https://s01.oss.sonatype.org/content/groups/public" }
        maven { url 'https://maven.aliyun.com/repository/central' }
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { url "https://maven.aliyun.com/repository/public" }
    }
}

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

class FileWidget extends StatefulWidget{

  const FileWidget({Key? key}) : super(key: key);

  @override
  State<FileWidget> createState() {
    return FileState();
  }
}

class FileState extends  State<FileWidget>{
  int _counter=0;


  @override
  void initState() {
    super.initState();
    //从文件读取点击次数
    _readCount().then((int value) {
      setState(() {
        _counter = value;
      });
    });
  }

  Future<int> _readCount() async{
    try {
      File file = await _getLocalFile();
      // 读取点击次数(以字符串)
      String contents = await file.readAsString();
      return int.parse(contents);
    } on FileSystemException {
      return 0;
    }
  }

  Future<File> _getLocalFile() async{
    // 获取应用目录
    String dir = (await getApplicationDocumentsDirectory()).path;
    return File('$dir/counter.txt');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("文件操作")),
      body: Center(
        child: Text("点击了 $_counter 次"),
      ),
      floatingActionButton: FloatingActionButton(
        tooltip: "Increment",
        onPressed: _incrementCounter,
        child: const Icon(Icons.add),
      ),
    );
  }

   _incrementCounter() async{
     setState(() {
       _counter++;
     });
     // 将点击次数以字符串类型写到文件中
     await (await _getLocalFile()).writeAsString('$_counter');
  }
}

创建的counter.txt目录在:data-项目包名-app_flutter目录下
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xiaopihair123/article/details/125187265