Flutter页面内容可点击,可滑动,底部固定按钮

梦里梦外; 2022-11-22 03:06 617阅读 0赞

先看看效果

在这里插入图片描述

上代码

  • 需要中间滑动,然后固定底部按钮

    Expanded( // 这个页面是要滑动的,所以用Expanded
    child:SingleChildScrollView(

    1. child:xxx()
    2. )

    ),

  • 页面不需要滑动,直接固定底部按钮

    Spacer(), // 不需要滑动的页面可以直接用这个

  • 完整代码

    import ‘package:flutter/material.dart’;

    import ‘package:interviewer_app/common/component_index.dart’;

    class MyChooseList extends StatefulWidget {
    MyChooseList({ Key key, this.chooseType}) : super(key: key);

    final chooseType;

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

    // 添加表单列表
    class _ChooseList extends State {
    int currentItem = 1; // 新增本行

    // final chooseType;
    final List dataList = [

    1. { 'id': 1, 'title': '表单名称1'},
    2. { 'id': 2, 'title': '表单名称2'},
    3. { 'id': 3, 'title': '表单名称3'},
    4. { 'id': 4, 'title': '表单名称3'},
    5. { 'id': 5, 'title': '表单名称3'},
    6. { 'id': 6, 'title': '表单名称3'},
    7. { 'id': 7, 'title': '表单名称3'},
    8. { 'id': 8, 'title': '表单名称3'},
    9. { 'id': 9, 'title': '表单名称3'},
    10. { 'id': 10, 'title': '表单名称3'},
    11. { 'id': 11, 'title': '表单名称3'},
    12. { 'id': 12, 'title': '表单名称12'},

    ];

    List _listView(context) {

    1. List<Widget> listWidget = [];
    2. // final bool alreadySaved = _saved.contains(e['id']);
    3. dataList.map((e) => {
    4. listWidget.add(
    5. listItem(e)
    6. )
    7. }).toList();
    8. return listWidget;

    }

    Widget listItem(item) {

    1. // print(item);
    2. final bool alreadySaved = currentItem == item['id'];
    3. return ListTile(
    4. title:Text(item['title']),
    5. trailing:Image.asset(
    6. alreadySaved ? Utils.getImgPath('checked') : Utils.getImgPath('unchecked'),
    7. width: 22.0,
    8. fit: BoxFit.fill,
    9. height: 22.0,
    10. ),
    11. onTap: () {
    12. setState(() {
    13. currentItem = item['id'];
    14. });
    15. }
    16. );

    }

    @override
    Widget build(BuildContext context) {

    1. return Scaffold(
    2. appBar: AppBar(
    3. title: Text("添加表单"),
    4. ),
    5. body:
    6. Padding(
    7. padding: EdgeInsets.all(16.0),
    8. child: Column(
    9. crossAxisAlignment: CrossAxisAlignment.start,
    10. children: <Widget>[
    11. Row(
    12. mainAxisAlignment: MainAxisAlignment.start,
    13. children: <Widget>[Text('请选择要添加的表单')]
    14. ),
    15. Expanded( // 这个页面是要滑动的,所以用Expanded
    16. child:SingleChildScrollView(
    17. child:
    18. Column(
    19. mainAxisAlignment: MainAxisAlignment.start,
    20. children: _listView(context),
    21. ),
    22. )
    23. ),
    24. // Spacer(), // 不需要滑动的页面可以直接用这个
    25. new RoundButton(
    26. text: "下一步",
    27. bgColor:
    28. margin: EdgeInsets.only(top: 20),
    29. onPressed: () {
    30. // _userLogin();
    31. },
    32. ),
    33. ]
    34. ),
    35. ),
    36. );

    }
    }

公众号

欢迎大家关注我的公众号: 石马上coding,一起成长
石马上coding

发表评论

表情:
评论列表 (有 0 条评论,617人围观)

还没有评论,来说两句吧...

相关阅读