CustomScrollView

body: CustomScrollView(
              slivers: [
                SliverList(
                  delegate: SliverChildBuilderDelegate(
                    (context, int index) {
                      Container postPiece;
                      if (index == 0) {
                        //post owner
                        postPiece = Container(
                          padding: EdgeInsets.all(2.0),
                            child: Flex(
                          direction: Axis.vertical,
                          mainAxisSize: MainAxisSize.min,
                          children: <Widget>[
                            Container(
                              padding: EdgeInsets.all(3.0),
                              color: Colors.black38,
                              child: Column(
                                children: <Widget>[
                                  Row(
                                    mainAxisAlignment: MainAxisAlignment.start,
                                    children: <Widget>[
                                      Container(
                                        height: 50.0,
                                         50.0,
                                        child: Image.network(
                                          content.ownerAvatar,
                                          fit: BoxFit.cover,
                                        ),
                                        padding: EdgeInsets.all(7.0),
                                      ),
                                      Expanded(
                                        child: Container(
                                          padding: EdgeInsets.only(left: 7.0),
                                          child: Text(
                                            content.owner,
                                          ),
                                          alignment: Alignment.centerLeft,
                                        ),
                                      ),

                                      Container(
                                        alignment: Alignment.centerRight,
                                        child: Text(content.mainPostTime +
                                            '  ' +
                                            content.click),
                                      ),

                                    ],
                                  ),

                                ],
                              ),
                            ),
                            Flexible(
                              child: Container(
                                padding: EdgeInsets.all(7.0),
                                child: Column(
                                  mainAxisAlignment: MainAxisAlignment.start,
                                  crossAxisAlignment: CrossAxisAlignment.start,
                                  children: content.mainPost,
                                ),
                              ),
                            ),
                            Container(
                              child: PublicFunc(),
                            ),
                            Divider(
                              color: Colors.black38,
                            ),
                          ],
                        ));
                      } else if (content.replyPosts.length > 0) {
                        //replies
                        if (content.replyPosts.length > index) {
                          postPiece = Container(
                            padding: EdgeInsets.all(2.0),
                              child: Flex(
                            direction: Axis.vertical,
                            mainAxisSize: MainAxisSize.min,
                            children: <Widget>[
                              Container(
                                height: 50.0,
                                color: Colors.black38,
                                child: Row(
                                  children: <Widget>[
                                    Container(
                                      padding: EdgeInsets.all(7.0),
                                      child: Image.network(
                                          content.replyPosts[index]
                                              ['avatar']), //avatar
                                    ),
                                    Container(
                                      padding: EdgeInsets.only(left: 10.0),
                                      child: Text(content.replyPosts[index]
                                          ['name']), //name
                                    ),
                                    Expanded(
                                      child: Container(
                                        alignment: Alignment.centerRight,
                                        child: Text(
                                            content.replyPosts[index]['time']),
                                      ),
                                    ),
                                  ],
                                ),
                              ),
                              Container(
                                padding: EdgeInsets.all(10.0),
                                alignment: Alignment.topLeft,
                                child: content.replyPosts[index]['content'][0],
                              ),
                            ],
                          ));
                        } else if (content.replyPosts.length == index) {
                          //bottom last reply
                          postPiece = Container(
                            padding: EdgeInsets.all(2.0),
                              child: Flex(
                            direction: Axis.vertical,
                            mainAxisSize: MainAxisSize.min,
                            children: <Widget>[
                              Container(
                                height: 50.0,
                                color: Colors.black38,
                                padding: EdgeInsets.all(7.0),
                                child: Row(
                                  children: <Widget>[
                                    Container(
                                      child: Image.network(
                                          content.replyPosts[index]
                                              ['avatar']), //avatar
                                    ),
                                    Container(
                                      padding: EdgeInsets.only(left: 10.0),
                                      child: Text(content.replyPosts[index]
                                          ['name']), //name
                                    ),
                                    Expanded(
                                      child: Container(
                                        alignment: Alignment.centerRight,
                                        child: Text(
                                            content.replyPosts[index]['time']),
                                      ),
                                    ),
                                  ],
                                ),
                              ),
                              Container(
                                padding: EdgeInsets.all(10.0),
                                alignment: Alignment.topLeft,
                                child: content.replyPosts[index]['content'][0],
                              ),
                              Container(
                                child: Text('1,2,3,4,5 pages'),
                              ),
                            ],
                          ));
                        }
                      }
                      return postPiece;
                    },
                    childCount: content.replyPosts.length + 1,
                  ),
                ),
              ],
            ),

  

SingleChildScrollView

return SafeArea(
      child: Scaffold(
        appBar: AppBar(
          title: Text('add Prefix'),
        ),
        body: Container(
             double.infinity,
            height: MediaQuery.of(context).size.height -
                MediaQuery.of(context).padding.bottom -
                MediaQuery.of(context).padding.top,
            child: SingleChildScrollView(
              child: Column(
                      children: <Widget>[
                        Container(
                          padding: EdgeInsets.only(left: 10.0, right: 10.0),
                           double.infinity,
                          child: TextField(
                            maxLines: 8,
                          ),
                        ),

                        Container(
                          padding: EdgeInsets.only(left: 10.0, right: 10.0),
                           double.infinity,
                          child: Row(
                            children: <Widget>[
                              Expanded(
                                  child: Column(
                                children: <Widget>[

                                  Row(
                                    children: <Widget>[

                                      Expanded(
                                        flex: 5,
                                          child: Container(
                                            padding: EdgeInsets.only(left: 5, right: 5),
                                            child: TextField(
                                              decoration: InputDecoration(
                                                labelText: 'Whois Server'
                                              ),
                                            ),
                                          )),

                                      Expanded(
                                        flex: 1,
                                          child: Container(
                                            padding: EdgeInsets.only(left: 5, right: 5),
                                            child: TextField(
                                              controller: portController,
                                              decoration: InputDecoration(
                                                  labelText: 'Port'
                                              ),
                                            ),
                                          )),

                                    ],
                                  ),

                                  Row(
                                    children: <Widget>[

                                      Expanded(
                                          flex: 3,
                                          child: Container(
                                            padding: EdgeInsets.only(left: 5, right: 5),
                                            child: TextField(
                                              decoration: InputDecoration(
                                                labelText: 'Domain'
                                              ),
                                            ),
                                          )),

                                      Container(
                                        margin: EdgeInsets.only(left: 5, right: 5),
                                         70.0,
                                        child: RaisedButton(onPressed: (){}, child: Text('GET'),),
                                      ),

                                    ],
                                  ),

                                ],
                              )),

                            ],
                          ),
                        ),

                        Container(
                          padding: EdgeInsets.only(left: 10.0, right: 10.0),
                           double.infinity,
                          child: Row(
                            children: <Widget>[
                              Container(
                                child: Text('Name:'),
                              ),
                              Expanded(
                                  flex: 1,
                                  child: Container(
                                    child: TextField(
                                      maxLines: 1,
                                    ),
                                  )),
                              SizedBox(
                                 5.0,
                              ),
                              Expanded(
                                  flex: 1,
                                  child: Container(
                                    child: TextField(
                                      maxLines: 1,
                                    ),
                                  )),
                              Container(
                                child: IconButton(
                                    icon: Icon(Icons.arrow_forward_ios),
                                    onPressed: () {}),
                              ),
                            ],
                          ),
                        ),

                        Container(
                          padding: EdgeInsets.only(left: 10.0, right: 10.0),
                           double.infinity,
                          child: Row(
                            children: <Widget>[
                              Container(
                                child: Text('Registrar:'),
                              ),
                              Expanded(
                                  flex: 1,
                                  child: Container(
                                    child: TextField(
                                      maxLines: 1,
                                    ),
                                  )),
                              SizedBox(
                                 5.0,
                              ),
                              Expanded(
                                  flex: 1,
                                  child: Container(
                                    child: TextField(
                                      maxLines: 1,
                                    ),
                                  )),
                              Container(
                                child: IconButton(
                                    icon: Icon(Icons.arrow_forward_ios),
                                    onPressed: () {}),
                              ),
                            ],
                          ),
                        ),

                        Container(
                          padding: EdgeInsets.only(left: 10.0, right: 10.0),
                           double.infinity,
                          child: Row(
                            children: <Widget>[
                              Container(
                                child: Text('Registrar:'),
                              ),
                              Expanded(
                                  flex: 1,
                                  child: Container(
                                    child: TextField(
                                      maxLines: 1,
                                    ),
                                  )),
                              SizedBox(
                                 5.0,
                              ),
                              Expanded(
                                  flex: 1,
                                  child: Container(
                                    child: TextField(
                                      maxLines: 1,
                                    ),
                                  )),
                              Container(
                                child: IconButton(
                                    icon: Icon(Icons.arrow_forward_ios),
                                    onPressed: () {}),
                              ),
                            ],
                          ),
                        ),

                        Container(
                          padding: EdgeInsets.only(left: 10.0, right: 10.0),
                           double.infinity,
                          child: Row(
                            children: <Widget>[
                              Container(
                                child: Text('Registrar:'),
                              ),
                              Expanded(
                                  flex: 1,
                                  child: Container(
                                    child: TextField(
                                      maxLines: 1,
                                    ),
                                  )),
                              SizedBox(
                                 5.0,
                              ),
                              Expanded(
                                  flex: 1,
                                  child: Container(
                                    child: TextField(
                                      maxLines: 1,
                                    ),
                                  )),
                              Container(
                                child: IconButton(
                                    icon: Icon(Icons.arrow_forward_ios),
                                    onPressed: () {}),
                              ),
                            ],
                          ),
                        ),

                        Container(
                          padding: EdgeInsets.only(left: 10.0, right: 10.0),
                           double.infinity,
                          child: Row(
                            children: <Widget>[
                              Container(
                                child: Text('Registrar:'),
                              ),
                              Expanded(
                                  flex: 1,
                                  child: Container(
                                    child: TextField(
                                      maxLines: 1,
                                    ),
                                  )),
                              SizedBox(
                                 5.0,
                              ),
                              Expanded(
                                  flex: 1,
                                  child: Container(
                                    child: TextField(
                                      maxLines: 1,
                                    ),
                                  )),
                              Container(
                                child: IconButton(
                                    icon: Icon(Icons.arrow_forward_ios),
                                    onPressed: () {}),
                              ),
                            ],
                          ),
                        ),

                        Container(
                          padding: EdgeInsets.only(left: 10.0, right: 10.0),
                          child: RaisedButton(
                              child: Text('SAVE'), onPressed: () {}),
                        ), //
                      ],
                    ),
            )
        ),
      ),
    );

  

原文地址:https://www.cnblogs.com/pythonClub/p/10766895.html