Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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
Flutter 在performLayout()期间引发了以下断言:_Flutter - Fatal编程技术网

Flutter 在performLayout()期间引发了以下断言:

Flutter 在performLayout()期间引发了以下断言:,flutter,Flutter,我是一个新手,我正在学习这门课程,但当我在windows机器上的Android模拟器上运行应用程序时,我遇到了这个错误,它会在整个屏幕上显示按钮 这个应用程序很简单,我只是想从用户那里获取数据,将其存储在s文件中,然后在控制台中打印出来 预期结果 我的代码:- 主飞镖 import 'dart:async'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:path_provider/pat

我是一个新手,我正在学习这门课程,但当我在windows机器上的Android模拟器上运行应用程序时,我遇到了这个错误,它会在整个屏幕上显示按钮

这个应用程序很简单,我只是想从用户那里获取数据,将其存储在s文件中,然后在控制台中打印出来

预期结果

我的代码:-

主飞镖

import 'dart:async';
import 'dart:io';

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


void main() async{

  var data = await readData();
  if(data != null){
    print(data);
  }

  runApp(
      MaterialApp(
        title: "IO",
        home: Home(),
      )
  );
}

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {

  var _enterDataField = TextEditingController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Read/Write"),
        centerTitle: true,
        backgroundColor: Colors.greenAccent,
      ),
      body: new Container(
        padding: EdgeInsets.all(13.4),
        alignment: Alignment.topCenter,
        child: ListTile(
          title: TextField(
            controller: _enterDataField,
            decoration: InputDecoration(
                labelText: "Input Something"
            ),
          ),
          subtitle: FlatButton(
            color: Colors.redAccent,
            onPressed: (){
              print("Flat button");
              writeData(_enterDataField.text);
            },
            child: new Column(
              children: <Widget>[
                Text("Save Data"),
                Padding(padding: EdgeInsets.all(14.5)),
                Text("Save data goes all"),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

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

Future<File> get _localFile async {
  final path = await _localPath;
  return File("$path/data.txt"); // /home/directory/data.txt
}

Future<File> writeData(String message) async {
  final file = await _localFile;
  return file.writeAsString("$message");
}

Future<String> readData() async{
  try{
    final file = await _localFile;
    String data = await file.readAsString();
    return data;
  }catch(e){
    return "Nothing has been saved yet!";
  }
}
导入'dart:async';
导入“dart:io”;
进口“包装:颤振/材料.省道”;
导入“package:path_provider/path_provider.dart”;
void main()异步{
var data=wait readData();
如果(数据!=null){
打印(数据);
}
runApp(
材料聚丙烯(
标题:“IO”,
home:home(),
)
);
}
类Home扩展了StatefulWidget{
@凌驾
_HomeState createState()=>\u HomeState();
}
类(HomeState扩展状态){
var_enterDataField=TextEditingController();
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“读/写”),
标题:对,
背景颜色:Colors.greenAccent,
),
主体:新容器(
填充:所有边缘设置(13.4),
对齐:alignment.topCenter,
孩子:ListTile(
标题:文本字段(
控制器:\输入数据字段,
装饰:输入装饰(
labelText:“输入内容”
),
),
字幕:扁平按钮(
颜色:Colors.redAccent,
已按下:(){
打印(“平面按钮”);
writeData(_enterDataField.text);
},
子:新列(
儿童:[
文本(“保存数据”),
填充(填充:所有边集(14.5)),
文本(“保存所有数据”),
],
),
),
),
),
);
}
}
未来获取\u本地路径异步{
最终目录=等待getApplicationDocumentsDirectory();
return directory.path;///home/directory/
}
未来获取\u本地文件异步{
最终路径=等待_localPath;
返回文件(“$path/data.txt”);///home/directory/data.txt
}
未来写入数据(字符串消息)异步{
final file=wait\u localFile;
返回文件.writeAsString($message”);
}
Future readData()异步{
试一试{
final file=wait\u localFile;
String data=wait file.readAsString();
返回数据;
}捕获(e){
return“尚未保存任何内容!”;
}
}
公开发行

version: 1.0.0+1

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2
  path_provider: ^1.1.0
版本:1.0.0+1
环境:
sdk:“>=2.1.0

用这个

Widget _myWidget() {
  return Padding(
    padding: const EdgeInsets.all(24.0),
    child: Column(
      mainAxisSize: MainAxisSize.min,
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        TextField(decoration: InputDecoration(hintText: "Write Something")),
        Container(
          color: Colors.red,
          width: 200,
          height: 100,
          child: Column(children: <Widget>[
            Text("Save Data"),
            Spacer(),
            Text("Save Data goes here"),
          ],),
        ),
      ],
    ),
  );
}
Widget\u myWidget(){
返回填充(
填充:常数边集全部(24.0),
子:列(
mainAxisSize:mainAxisSize.min,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
TextField(装饰:输入装饰(hintText:“写东西”),
容器(
颜色:颜色,红色,
宽度:200,
身高:100,
子项:列(子项:[
文本(“保存数据”),
垫片(),
文本(“此处保存数据”),
],),
),
],
),
);
}

用这个

Widget _myWidget() {
  return Padding(
    padding: const EdgeInsets.all(24.0),
    child: Column(
      mainAxisSize: MainAxisSize.min,
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        TextField(decoration: InputDecoration(hintText: "Write Something")),
        Container(
          color: Colors.red,
          width: 200,
          height: 100,
          child: Column(children: <Widget>[
            Text("Save Data"),
            Spacer(),
            Text("Save Data goes here"),
          ],),
        ),
      ],
    ),
  );
}
Widget\u myWidget(){
返回填充(
填充:常数边集全部(24.0),
子:列(
mainAxisSize:mainAxisSize.min,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
TextField(装饰:输入装饰(hintText:“写东西”),
容器(
颜色:颜色,红色,
宽度:200,
身高:100,
子项:列(子项:[
文本(“保存数据”),
垫片(),
文本(“此处保存数据”),
],),
),
],
),
);
}

为了工作,我不得不将代码编辑成这样

FlatButton(
              color: Colors.redAccent,
              onPressed: (){
                print("Flat button ${_enterDataField.text}");
                writeData(_enterDataField.text.toString());
              },
              child: new Column(
                children: <Widget>[
                  Text("Save Data"),
                  Padding(padding: EdgeInsets.all(14.5)),
                  FutureBuilder(
                    future: readData(),
                    builder: (BuildContext context, AsyncSnapshot<String> data){
                      if(data.hasData != null){
                        return Text(
                          data.data.toString(),
                          style: TextStyle(
                            color: Colors.white70,
                          ),
                        );
                      }else{
                        return Text("No data has been saved");
                      }
                    },
                  ),
                ],
              ),
            )
FlatButton(
颜色:Colors.redAccent,
已按下:(){
打印(“平面按钮${u enterDataField.text}”);
writeData(_enterDataField.text.toString());
},
子:新列(
儿童:[
文本(“保存数据”),
填充(填充:所有边集(14.5)),
未来建设者(
future:readData(),
生成器:(BuildContext上下文,异步快照数据){
if(data.hasData!=null){
返回文本(
data.data.toString(),
样式:TextStyle(
颜色:颜色。白色70,
),
);
}否则{
返回文本(“未保存任何数据”);
}
},
),
],
),
)

为了工作,我不得不将代码编辑成这样

FlatButton(
              color: Colors.redAccent,
              onPressed: (){
                print("Flat button ${_enterDataField.text}");
                writeData(_enterDataField.text.toString());
              },
              child: new Column(
                children: <Widget>[
                  Text("Save Data"),
                  Padding(padding: EdgeInsets.all(14.5)),
                  FutureBuilder(
                    future: readData(),
                    builder: (BuildContext context, AsyncSnapshot<String> data){
                      if(data.hasData != null){
                        return Text(
                          data.data.toString(),
                          style: TextStyle(
                            color: Colors.white70,
                          ),
                        );
                      }else{
                        return Text("No data has been saved");
                      }
                    },
                  ),
                ],
              ),
            )
FlatButton(
颜色:Colors.redAccent,
已按下:(){
打印(“平面按钮${u enterDataField.text}”);
writeData(_enterDataField.text.toString());
},
子:新列(
儿童:[
文本(“保存数据”),
填充(填充:所有边集(14.5)),
未来建设者(
future:readData(),
生成器:(BuildContext上下文,异步快照数据){
if(data.hasData!=null){
返回文本(
data.data.toString(),
样式:TextStyle(
颜色:颜色。白色70,
),
);
}否则{
返回文本(“未保存任何数据”);
}
},
),
],
),
)

您介意现在接受答案吗?可以吗