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

先看看效果

在这里插入图片描述

上代码

  • 需要中间滑动,然后固定底部按钮
Expanded( // 这个页面是要滑动的,所以用Expanded
   child:SingleChildScrollView(
     child:xxx()
     )
),
  • 页面不需要滑动,直接固定底部按钮
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<MyChooseList> {
  int currentItem = 1; // 新增本行

  // final chooseType;
  final List dataList = [
    {'id': 1, 'title': '表单名称1'},
    {'id': 2, 'title': '表单名称2'},
    {'id': 3, 'title': '表单名称3'},
    {'id': 4, 'title': '表单名称3'},
    {'id': 5, 'title': '表单名称3'},
    {'id': 6, 'title': '表单名称3'},
    {'id': 7, 'title': '表单名称3'},
    {'id': 8, 'title': '表单名称3'},
    {'id': 9, 'title': '表单名称3'},
    {'id': 10, 'title': '表单名称3'},
    {'id': 11, 'title': '表单名称3'},
    {'id': 12, 'title': '表单名称12'},
  ];

  List<Widget> _listView(context) {
    List<Widget> listWidget = [];
    // final bool alreadySaved = _saved.contains(e['id']);
    dataList.map((e) => {
    listWidget.add(
      listItem(e)
    )
      }).toList();
    return listWidget;
  }

  Widget listItem(item) {
    // print(item);
    final bool alreadySaved = currentItem == item['id'];
    return ListTile(
          title:Text(item['title']),
          trailing:Image.asset(
            alreadySaved ? Utils.getImgPath('checked') : Utils.getImgPath('unchecked'),
            width: 22.0,
            fit: BoxFit.fill,
            height: 22.0,
          ),
          onTap: () {
            setState(() {
              currentItem = item['id'];
            });
          }
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("添加表单"),
        ),
        body:
        Padding(
          padding: EdgeInsets.all(16.0),
          child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                Row(
                    mainAxisAlignment: MainAxisAlignment.start,
                    children: <Widget>[Text('请选择要添加的表单')]
                ),
                Expanded( // 这个页面是要滑动的,所以用Expanded
                  child:SingleChildScrollView(
                    child:
                Column(
                    mainAxisAlignment: MainAxisAlignment.start,
                    children: _listView(context),
                ),
                  )
                ),
                // Spacer(),  // 不需要滑动的页面可以直接用这个
                new RoundButton(
                  text: "下一步",
                    bgColor:
                  margin: EdgeInsets.only(top: 20),
                  onPressed: () {
                    // _userLogin();
                  },
                ),
              ]
          ),
        ),
    );
  }
}

公众号

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值