如何在Flutter中删除屏幕上的空文本

时间:2019-02-24 20:02:50

标签: dart flutter

我构建了一个有两个页面(屏幕)的应用程序,第一页从第二页接收数据。但是问题是,在从第二页获取数据之前,它在第一页屏幕上显示“空”下面是这两页的代码。注意:第一页屏幕是主启动器屏幕。

  

首页

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  String value;
  MyHomePage({Key key,this.value}):super(key:key);
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("Flutter"),
      ),
      body:Center(
       child:new Text("${widget.value}")      )
}
  

第二页

class _List extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: MyList(),
    );
  }
}
class MyList extends StatefulWidget {
  @override
  _MyListState createState() => _MyListState();
}

class _MyListState extends State<MyList> {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: Text("List"),
      ),
      body: new Container(
        padding: new EdgeInsets.only(left: 5.0,top: 20.0,right: 5.0),
        child: new Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[
            GestureDetector(
              onTap: (){
                var route=new MaterialPageRoute(builder: (BuildContext context)=>new MyHomePage(value: "Apple",),
                );
                Navigator.of(context).push(route);
              },
              child: new Card(
                child:
                new Column(
                  children: <Widget>[
                    new Text('Apple'),
                    new Text('Banana')
                  ],
                ),
              ),
            ),
 );
  }
}

1 个答案:

答案 0 :(得分:-1)

您可以使用空白的Container()小部件代替Text()小部件,如下面的代码:

    class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(
        title: new Text("Flutter"),
    ),
    body:Center(
        child: widget.value==null ? Container() : new Text("${widget.value}")
      )
    );
  }
}