Flutter移动电商实战 --(49)详细页_Stack制作底部工具栏

Posted crazycode2

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter移动电商实战 --(49)详细页_Stack制作底部工具栏相关的知识,希望对你有一定的参考价值。

一直悬浮在最下面的

技术图片

Stack层叠组件。里面用Row 可以横向布局

开始

stack如果想定位就要用position去定位。

修改return返回值的这个地方

技术图片

技术图片

大R刷新查看效果,可以看到固定的在左下角的测试的字样。一直固定在底部

技术图片

做底部的固定栏widget

新建页面:在文件夹details_page/details_bottom.dart 在布局用三个InkWell 因为都是可以点击的

技术图片

加入购物车的InkWell

技术图片

立即购买,复制购物车的InkWell改改就可以了。

技术图片

引用这个组件

技术图片

效果展示

技术图片

最终代码:

details_bottom.dart

import ‘package:flutter/material.dart‘;
import ‘package:flutter_screenutil/flutter_screenutil.dart‘;

class DetailsBottom extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return Container(
      width: ScreenUtil().setWidth(750),
      color: Colors.white,
      height: ScreenUtil().setHeight(80),
      child: Row(
        children: <Widget>[
          InkWell(
            onTap: (),
            child: Container(
              width: ScreenUtil().setWidth(110),
              alignment: Alignment.center,
              child: Icon(
                Icons.shopping_cart,
                size:35,//图标没有自适应 要是设置size的大小
                color: Colors.red,
              ),
            ),            
          ),
          InkWell(
            onTap: (),
            child: Container(
              alignment: Alignment.center,
              width: ScreenUtil().setWidth(320),//750 - 110 再除以2 评分
              height: ScreenUtil().setHeight(80),
              color: Colors.green,
              child: Text(
                ‘加入购物车‘,
                style:TextStyle(color:Colors.white,fontSize: ScreenUtil().setSp(28)),
              ),
            ),
          ),
          InkWell(
            onTap: (),
            child: Container(
              alignment: Alignment.center,
              width: ScreenUtil().setWidth(320),//750 - 110 再除以2 评分
              height: ScreenUtil().setHeight(80),
              color: Colors.red,
              child: Text(
                ‘立即购买‘,
                style:TextStyle(color:Colors.white,fontSize: ScreenUtil().setSp(28)),
              ),
            ),
          )
        ],
      ),
    );
  

details_page.dart

import ‘package:flutter/material.dart‘;
import ‘package:provide/provide.dart‘;
import ‘../provide/details_info.dart‘;
import ‘./details_page/details_top_area.dart‘;
import ‘./details_page/details_expain.dart‘;
import ‘./details_page/details_tabbar.dart‘;
import ‘./details_page/details_web.dart‘;
import ‘./details_page/details_bottom.dart‘;

class DetailsPage extends StatelessWidget 
  final String goodsId;

  DetailsPage(this.goodsId);//flutter 1.2的最新的写法 构造函数

  @override
  Widget build(BuildContext context) 
 
    return Scaffold(
      appBar: AppBar(
        leading: IconButton(
          icon: Icon(Icons.arrow_back),
          onPressed: ()
            Navigator.pop(context);//返回上一个页面
          ,
        ),
        title: Text(‘商品详细页‘),
      ),
      body: FutureBuilder(
        future: _getBackInfo(context),
        builder: (context,snapshot)
          //判断是否有数据
          if(snapshot.hasData)
            //如果有数据返回一个Container
            return Stack(
              children: <Widget>[
                Container(
                  child: ListView(
                    children: <Widget>[
                      DetailsTopArea(),
                      DetailsExplain(),
                      DetailsTabbar(),
                      DetailsWeb()
                    ],
                  ),
                ),

                Positioned(
                  bottom: 0,
                  left: 0,
                  child: DetailsBottom(),
                )
              ],
            );
          else
            return Text(‘加载中......‘);//没有数据的情况
          
        ,
      ),
    );
  

  Future _getBackInfo(BuildContext context) async
    await Provide.value<DetailsInfoProvide>(context).getGoodsInfo(goodsId);
    //print(‘加载完成...........‘);
    return ‘完成加载‘;
  


.

以上是关于Flutter移动电商实战 --(49)详细页_Stack制作底部工具栏的主要内容,如果未能解决你的问题,请参考以下文章

dart版本升级后flutter移动电商代码引起的错误

电商小程序实战教程-类别管理移动端开发

电商小程序实战教程-类别管理移动端开发

Vue+Koa2移动电商实战 密码加密

Vue.js+Koa2移动电商实战2

Vue.js+Koa2移动电商实战3