Flutter 将数据保存到本地存储器时被覆盖的文本-颤振

Flutter 将数据保存到本地存储器时被覆盖的文本-颤振,flutter,dart,Flutter,Dart,我正在尝试将应用程序中出现的所有异常保存到本地存储中的特定文件中。但我面临的问题是,文本不是在单独一行中输入的,而是在同一行中被覆盖 自定义文件 import 'dart:io'; import 'package:path_provider/path_provider.dart'; class LogCat { String data; Future<String> get _localPath async { final directory = await g

我正在尝试将应用程序中出现的所有异常保存到本地存储中的特定文件中。但我面临的问题是,文本不是在单独一行中输入的,而是在同一行中被覆盖

自定义文件

import 'dart:io';
import 'package:path_provider/path_provider.dart';

class LogCat {

  String data;

  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<File> writeContent(String text) async {
    final file = await _localFile;
    // Write the file
    return file.writeAsString(text);
  }
}

这是因为您将
writeAsString
FileMode
一起用作write

writeAsString
的API如下所示

Future writeAsString(
字符串内容,
{FileMode:FileMode.write,
编码:utf8,
bool flush:false}
)
根据文件

默认情况下,writeAsString创建用于写入的文件,并在文件已存在时截断该文件。要将字节追加到现有文件,请将FileMode.append作为可选模式参数传递

只需将mode参数设置为
FileMode.append
,即可满足您的需要。查看文档

新线

您只需将
\n
添加到
writeContent
代码中的写入字符串,如下所示:

Future writeContent(字符串文本)异步{
final file=wait\u localFile;
//写文件
返回文件.writeAsString(“$text\n”);
}

这是因为您将
writeAsString
FileMode
一起用作write

writeAsString
的API如下所示

Future writeAsString(
字符串内容,
{FileMode:FileMode.write,
编码:utf8,
bool flush:false}
)
根据文件

默认情况下,writeAsString创建用于写入的文件,并在文件已存在时截断该文件。要将字节追加到现有文件,请将FileMode.append作为可选模式参数传递

只需将mode参数设置为
FileMode.append
,即可满足您的需要。查看文档

新线

您只需将
\n
添加到
writeContent
代码中的写入字符串,如下所示:

Future writeContent(字符串文本)异步{
final file=wait\u localFile;
//写文件
返回文件.writeAsString(“$text\n”);
}

您需要使用FileMode.append来解决覆盖问题。 试试这个:

file.writeAsString('text', FileMode.append);

您需要使用FileMode.append来解决覆盖问题。 试试这个:

file.writeAsString('text', FileMode.append);


可能是因为您正在将两个字符串保存在同一路径上。。因此,上一个字符串被覆盖是的,我正在将其保存在同一路径中,因为我正在尝试捕获来自每个页面的所有异常,并将其保存在单个文件中。因此,可能是因为您正在将两个字符串保存在同一路径上。。因此,前面的字符串被覆盖是的,我正在将其保存在同一路径中,因为我正在尝试捕获来自每个页面的所有异常,并将其保存在单个文件中。因此,
FileMode.append
确实有效,但是它不是写在新行中,而是写在前面的文本中,因为我可以看到前面文本的一些字符,如
来自main这是来自Delete main
现在。所以你需要在新消息中添加新行吗?是的,就像我需要消息放在新行中一样,不是一行中的所有内容是的,我只是在这行的末尾添加了
\n
,效果很好!哈哈!!我猜最后一次编辑可能是一条评论,
FileMode.append
确实有效,但是它不是写在新行中,而是写在前面的文本中,因为我可以看到前面文本的一些字符,如
来自main这是来自Delete main
现在。所以你需要在新消息中添加新行吗?是的,就像我需要消息放在新行中一样,不是一行中的所有内容是的,我只是在这行的末尾添加了
\n
,效果很好!哈哈!!最后一次编辑可能是一个注释,我猜是
文件模式。append
确实有效,但它不是写在新行中,而是写在前面的文本上,因为我可以看到前面文本的一些字符,因为
来自main这是来自Delete main
现在。我不知道这是否有效,但您可以添加“\n”在文本末尾换行
FileMode.append确实有效,但它不是写在新行中,而是被写在前面的文本上,因为我可以看到前面文本的一些字符,因为
the is is from main this from Delete main
now。我不知道这是否有效,但您可以添加“\n”在文本的末尾要换行
This is coming from main
This is from Delete
file.writeAsString('text', FileMode.append);