#flutter #dart #text-files
#трепетание #дротик #текстовые файлы
Вопрос:
В настоящее время я экспериментирую с File
классом для записи String
объектов в текстовый файл, который локально хранится на устройстве. Мне уже удалось создать текстовый файл и записать в него с помощью этого writeAsString
метода. Я также могу добавлять String
к нему объекты, передавая FileMode.append
их в качестве необязательного параметра mode . Однако я столкнулся с вопросом: что, если я захочу удалить несколько строк или количество символов из того же текстового файла? Есть ли способ сделать это?
Вот код, который я написал до сих пор:
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
void main() {
runApp(
MaterialApp(
title: 'Reading and Writing Files',
home: FlutterDemo(),
),
);
}
class FlutterDemo extends StatefulWidget {
@override
_FlutterDemoState createState() => _FlutterDemoState();
}
class _FlutterDemoState extends State<FlutterDemo> {
_createAndWrite(String text) async {
final Directory directory = await getApplicationDocumentsDirectory();
final File file = File('${directory.path}/test1.txt');
await file.writeAsString(text);
}
_writeAgain(String text) async {
final Directory directory = await getApplicationDocumentsDirectory();
final File file = File('${directory.path}/test1.txt');
await file.writeAsString(text, mode: FileMode.append);
}
Future<String> _read() async {
String text;
try {
final Directory directory = await getApplicationDocumentsDirectory();
final File file = File('${directory.path}/test1.txt');
text = await file.readAsString();
} catch (e) {
print("Couldn't read file");
}
print(text);
return text;
}
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Reading and Writing Files')),
body: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
FlatButton(
onPressed: (){
_createAndWrite("this is working");
},
child: Text(
"Create and write",
style: TextStyle(color: Colors.white),
),
color: Colors.blue,
height: 60,
minWidth: 80,
),
FlatButton(
onPressed: _read,
child: Text(
"Print onn the console",
style: TextStyle(color: Colors.white),
),
color: Colors.blue,
height: 60,
minWidth: 80,
),
FlatButton(
onPressed: (){
_writeAgain(" you added something new");
},
child: Text(
"Create and writen / Write again",
style: TextStyle(color: Colors.white),
),
color: Colors.blue,
height: 60,
minWidth: 80,
),
],
),
),
);
}
}