Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我想在Flatter中将数据从一个屏幕传递到另一个屏幕,并将数据保存到ListView/ListTiles_Android_Flutter_Dart - Fatal编程技术网

Android 我想在Flatter中将数据从一个屏幕传递到另一个屏幕,并将数据保存到ListView/ListTiles

Android 我想在Flatter中将数据从一个屏幕传递到另一个屏幕,并将数据保存到ListView/ListTiles,android,flutter,dart,Android,Flutter,Dart,我想在Flatter中将数据从一个屏幕传递到另一个屏幕,并将数据保存到ListView/ListTiles。我不明白 预期结果。在代码中,单击“保存”按钮图标时,什么也没有发生…我可以将数据传递到所需的屏幕,但单击“保存”图标时,它必须保存在主页上的ListView builder中,单击主页上的ListTile时,此屏幕必须打开..我正在使用路径提供程序,但无法实现输出..如果有人能提供帮助,我将不胜感激。请通过下面三节课,如果你能说出代码中的错误,我会通知你。 目标: 我能够使用data.a

我想在Flatter中将数据从一个屏幕传递到另一个屏幕,并将数据保存到ListView/ListTiles。我不明白 预期结果。在代码中,单击“保存”按钮图标时,什么也没有发生…我可以将数据传递到所需的屏幕,但单击“保存”图标时,它必须保存在主页上的ListView builder中,单击主页上的ListTile时,此屏幕必须打开..我正在使用路径提供程序,但无法实现输出..如果有人能提供帮助,我将不胜感激。请通过下面三节课,如果你能说出代码中的错误,我会通知你。 目标: 我能够使用data.addContent(_textEditingController.text)在内容字段中获取文本/数据。但在按下的保存图标按钮中,我试图打印(内容)…控制台中没有显示任何内容。如果单击保存图标按钮时显示内容,则会保存内容并应显示到主屏幕

class Data extends ChangeNotifier {

String title = '';
String content = '';
Map<String, List<String>> notes = {
  'titles': [],
  'contents': [],
  'timeSnapShots': [],
};

// void addTitle(String value) => title = value;

void addContent(String value) {
   content = value;
   print('here the messages');
   print(content);
  notifyListeners();
}

/// Create a new note by the given title and content.
void addNote() {
  var now = DateTime.now();
  String hours = now.hour < 10 ? '0${now.hour}' : '${now.hour}';
  String minutes = now.minute < 10 ? '0${now.minute}' : '${now.minute}';

  String currentTime = '$hours:$minutes';

  // notes['titles'].add(title);
  notes['contents'].add(content);
  notes['timeSnapShots'].add(currentTime);
  title = '';
  content=content;
  notifyListeners();
  writeFile();
}
void removeNote(int index) {
  // notes['titles'].remove(notes['titles'][index]);
  notes['contents'].remove(notes['contents'][index]);
  notes['timeSnapShots'].remove(notes['timeSnapShots'][index]);
  notifyListeners();
  writeFile();
}

Future<String> appPath() async {
  final document = await getApplicationDocumentsDirectory();
  return document.path;
}


Future<File> appFile() async {
  final path = await appPath();
  return File('$path/data.txt');
 
}
Future writeFile() async {
  final file = await appFile();

  /// The vertical bar help us split data when reading the file
  Future saveData = file.writeAsString(
      '${notes['titles']}|${notes['contents']}|${notes['timeSnapShots']}');

  return saveData;
}

Future readFile() async {
  final file = await appFile();

  List data = (await file.readAsString()).split('|');

  /// I called the (replaceAll) here because when we save list as
  /// string the '[' and ']' of lists also saved with it.
  notes['titles'] =
      data[0].replaceAll('[', '').replaceAll(']', '').split(',');
  notes['contents'] =
      data[1].replaceAll('[', '').replaceAll(']', '').split(',');
  notes['timeSnapShots'] =
      data[2].replaceAll('[', '').replaceAll(']', '').split(',');

  notifyListeners();
}
}

class AddingTextField extends StatefulWidget {
final int maxLines;
final String hintText;
final String text;
AddingTextField({this.maxLines,this.hintText, this.text});

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

class _AddingTextFieldState extends State<AddingTextField> {

TextEditingController _textEditingController;
@override
void initState() {
  _textEditingController = TextEditingController();
  _textEditingController.text = widget.text;
  super.initState();
 
}
@override
Widget build(BuildContext context) {
  var data = context.watch<Data>();

  return Padding(
    padding: const EdgeInsets.all(15),
    child: TextFormField(
      controller: _textEditingController,
      maxLines: widget.maxLines,
      decoration: InputDecoration(hintText: widget.hintText),
      onFieldSubmitted: (input) {
        if(input != null) {
          if(widget.hintText == 'Title'){
            // data.addTitle(input);
            print(input);
          }
          else
            // data.addContent(input);
            data.addContent(_textEditingController.text);
            // data.addContent(input);
        }
      },
    ),
  );
}
}


class AddNoteScreen extends StatelessWidget {

final String text;
AddNoteScreen({this.text});

@override
Widget build(BuildContext context) {
  var data = context.watch<Data>();

  

  return Scaffold(
    body: SafeArea(
      child: Column(
        children: <Widget>[
          CustomAppBar(
            title: 'Add Note',
            icon: Icons.save,
            onPressed: () {

              
              // data.addNote();
                // Navigator.push(context);
              // print(data.title);
              print(data.content);
              // if (data.title != '' && data.content != '') 
              if (data.content != ''&& data.content != null) 
              {
                data.addNote();
                // Navigator.pop(context);
              }
            },
          ),
          // AddingTextField(maxLines: 1, hintText: 'Title'),
          Flexible(child: AddingTextField(maxLines: 500, text: text)),
        ],
      ),
    ),
  );
}
}
类数据扩展ChangeNotifier{
字符串标题=“”;
字符串内容=“”;
地图注释={
“标题”:[],
“目录”:[],
“timeSnapShots”:[],
};
//void addTitle(字符串值)=>title=value;
void addContent(字符串值){
内容=价值;
打印(“此处为消息”);
印刷(内容);
notifyListeners();
}
///根据给定的标题和内容创建新注释。
void addNote(){
var now=DateTime.now();
字符串hours=now.hour<10?'0${now.hour}':“${now.hour}”;
字符串minutes=now.minute<10?'0${now.minute}':“${now.minute}”;
字符串currentTime='$hours:$minutes';
//注释[“标题]。添加(标题);
注释['contents']。添加(内容);
注释['timeSnapShots'].添加(当前时间);
标题='';
内容=内容;
notifyListeners();
writeFile();
}
void removeNote(整数索引){
//注释['titles']。删除(注释['titles'][索引]);
注释['contents']。删除(注释['contents'][索引]);
注释['timeSnapShots']。删除(注释['timeSnapShots'][index]);
notifyListeners();
writeFile();
}
Future appPath()异步{
最终文档=等待getApplicationDocumentsDirectory();
返回文档路径;
}
Future appFile()异步{
最终路径=等待appPath();
返回文件(“$path/data.txt”);
}
Future writeFile()异步{
最终文件=等待appFile();
///垂直条帮助我们在读取文件时分割数据
Future saveData=file.writeAsString(
“${notes['titles']}${notes['contents']}}${notes['timeSnapShots']}”);
返回存储数据;
}
Future readFile()异步{
最终文件=等待appFile();
列表数据=(wait file.readAsString()).split(“|”);
///我在这里调用了(replaceAll),因为当我们将列表另存为
///同时保存的列表的“[”和“]”字符串。
注释[“标题”]=
数据[0].replaceAll('[','').replaceAll(']','').split(',');
注释[‘内容’]=
数据[1].replaceAll('[','').replaceAll(']','').split(',');
注释['timeSnapShots']=
数据[2].replaceAll('[','').replaceAll(']','').split(',');
notifyListeners();
}
}
类AddingTextField扩展StatefulWidget{
最终整数最大线;
最终字符串hintText;
最终字符串文本;
AddingTextField({this.maxLines,this.hintText,this.text});
@凌驾
_AddingTextFieldState createState()=>\u AddingTextFieldState();
}
类_AddingTextFieldState扩展状态{
TextEditingController\u TextEditingController;
@凌驾
void initState(){
_textEditingController=textEditingController();
_textEditingController.text=widget.text;
super.initState();
}
@凌驾
小部件构建(构建上下文){
var data=context.watch();
返回填充(
填充:常量边集。全部(15),
子项:TextFormField(
控制器:_textededitingcontroller,
maxLines:widget.maxLines,
装饰:输入装饰(hintText:widget.hintText),
onfield提交:(输入){
如果(输入!=null){
如果(widget.hintText=='Title'){
//数据。添加标题(输入);
打印(输入);
}
其他的
//数据。添加内容(输入);
data.addContent(_textededitingcontroller.text);
//数据。添加内容(输入);
}
},
),
);
}
}
类AddNoteScreen扩展了无状态小部件{
最终字符串文本;
AddNoteScreen({this.text});
@凌驾
小部件构建(构建上下文){
var data=context.watch();
返回脚手架(
正文:安全区(
子:列(
儿童:[
自定义应用程序栏(
标题:“添加注释”,
图标:Icons.save,
已按下:(){
//data.addNote();
//Navigator.push(上下文);
//打印(数据、标题);
打印(数据、内容);
//如果(data.title!=''&&data.content!='')
if(data.content!=''&&data.content!=null)
{
data.addNote();
//Navigator.pop(上下文);
}
},
),
//AddingTextField(maxLines:1,hintText:“标题”),
灵活(子项:添加文本字段(最大行数:500,文本:文本)),
],
),
),
);
}
}

您要查找的内容称为序列化

跟进

请阅读相关内容。虽然此链接的内容实际上可能会解决问题,但本网站不鼓励只提供链接的答案。链接往往会断开,然后答案就会失去价值。最好将链接的重要部分作为文本包含在答案中,并提供链接作为参考。您的纯文本答案如下所示:
您要查找的内容在此处称为序列化跟进
,它除了关键字
序列化
外,没有提供太多信息。如果你认为仅此链接就有帮助,请将其作为评论发布(如果你有50个代表)。