11-Flutter移动电商实战-首页_屏幕适配方案和制作

1、flutter_ScreenUtil插件简介

flutter_ScreenUtil屏幕适配方案,让你的UI在不同尺寸的屏幕上都能显示合理的布局。

插件会让你先设置一个UI稿的尺寸,他会根据这个尺寸,根据不同屏幕进行缩放,能满足大部分屏幕场景。

github:https://github.com/OpenFlutter/flutter_ScreenUtil

这个轮子功能还不是很完善,但是也在一点点的进步,这也算是国内现在最好的Flutter屏幕适配插件了,又不足的地方你可以自己下载源码进行修改,并使用。

个人觉的今年在国内应该是Flutter的爆发年,也会有更多更好用的插件诞生。

2、flutter_ScreenUtil的引入和使用

因为是第三方包,所以还需要在pubspec.yaml文件中进行注册依赖。在填写依赖之前,最好到github上看一下最新版本,因为这个插件也存在着升级后,以前版本不可用的问题。

dependencies:     flutter_screenutil: ^0.5.2

需要在每个使用的地方进行导入:

import ‘package:flutter_screenutil/flutter_screenutil.dart‘;

3、初始化设置尺寸

在使用之前请设置好设计稿的宽度和高度,传入设计稿的宽度和高度,注意单位是px。

我们公司一般会以Iphone6的屏幕尺寸作设计稿,这个习惯完全是当初公司组长的手机是Iphone6的,审核美工稿的时候,可以完美呈现,所以就沿用下来了(我想估计老总的手机早升级了)。

ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context);

这句话的引入一定要在有了界面UI树建立以后执行,如果还没有UI树,会报错的。比如我们直接放在类里,就会报错,如果昉在build方法里,就不会报错。

适配尺寸

这时候我们使用的尺寸是px.

  • 根据屏幕宽度适配:width:ScreenUtil().setWidth(540);
  • 根据屏幕高度适配:height:ScreenUtil().setHeight(200);
  • 适配字体大小:fontSize:ScreenUtil().setSp(28,false);

配置字体大小的参数false是不会根据系统的"字体大小"辅助选项来进行缩放。

根据学到的知识,来设置一下昨天的轮播图片问题。

  • 首先在home_page.dart里,用import进行引入。
  • 在build方法里,初始化设计稿尺寸,ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context);.
  • 给Container设置高和宽的值height: ScreenUtil().setHeight(333),和width: ScreenUtil().setWidth(750),

全部代码如下:

import ‘dart:convert‘;

import ‘package:flutter/material.dart‘;import ‘../service/service_method.dart‘;import ‘package:flutter_swiper/flutter_swiper.dart‘;import ‘package:flutter_screenutil/flutter_screenutil.dart‘;

class HomePage extends StatefulWidget {  _HomePageState createState() => _HomePageState();

}

class _HomePageState extends State<HomePage> {

  String homePageContent=‘正在获取数据‘;

  @override  Widget build(BuildContext context) {    return Scaffold(        appBar: AppBar(          title: Text(‘百姓生活+‘),        ),        body:FutureBuilder(            future: getHomePageContent(),            builder: (context,snapshot){              if(snapshot.hasData){                var data = json.decode(snapshot.data.toString());                List<Map> swiper = (data[‘data‘][‘slides‘] as List).cast();                return Column(                  children: <Widget>[                    SwiperDiy(swiperDataList: swiper,)                  ],                );              }else{                  return Center(                    child: Text("加载中"),                  );              }            },        )    );  }}

轮播组件class SwiperDiy extends StatelessWidget {

  final List swiperDataList;

  SwiperDiy({Key key,this.swiperDataList}):super(key:key);

  @override  Widget build(BuildContext context) {    ScreenUtil.instance = ScreenUtil(width: 750,height: 1334)..init(context);    return Container(      height: ScreenUtil().setHeight(333),      width: ScreenUtil().setWidth(750),      child: Swiper(          itemCount: swiperDataList.length,          itemBuilder: (BuildContext context,int index){              return Image.network("${swiperDataList[index][‘image‘]}",fit:BoxFit.fill);          },          pagination: SwiperPagination(),          autoplay: true,      ),    );  }}

重新运行一下项目,效果图下图所示:

原文地址:https://www.cnblogs.com/niceyoo/p/11029192.html

时间: 2024-11-08 05:24:26

11-Flutter移动电商实战-首页_屏幕适配方案和制作的相关文章

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

一直悬浮在最下面的 Stack层叠组件.里面用Row 可以横向布局 开始 stack如果想定位就要用position去定位. 修改return返回值的这个地方 大R刷新查看效果,可以看到固定的在左下角的测试的字样.一直固定在底部 做底部的固定栏widget 新建页面:在文件夹details_page/details_bottom.dart 在布局用三个InkWell 因为都是可以点击的 加入购物车的InkWell 立即购买,复制购物车的InkWell改改就可以了. 引用这个组件 效果展示 最终代

Flutter移动电商实战 --(48)详细页_详情和评论的切换

增加切换的效果,我们主要是修改这个地方 这样我们的评论的内容就显示出来了 最终代码 details_web.dart import 'package:flutter/material.dart'; import 'package:provide/provide.dart'; import '../../provide/details_info.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'p

12-Flutter移动电商实战-首页导航区域编写

1.导航单元素的编写 从外部看,导航是一个GridView部件,但是每一个导航又是一个上下关系的Column.小伙伴们都知道Flutter有多层嵌套的问题,如果我们都写在一个组件里,那势必造成嵌套严重,不利于项目以后的维护工作.所以我们单独把每一个自元素导航拿出来,一个方法,返回一个组件. 代码如下:详细的解释可以观看视频. class TopNavigator extends StatelessWidget {  final List navigatorList;  TopNavigator(

某电商项目PostgreSQL数据库备份恢复方案

某电商项目PostgreSQL数据库备份恢复方案: 下载地址:某电商项目PostgreSQL数据库备份恢复方案

如何设计电商APP首页

我这里分析的"产品陈列设计"并非建立在专业领域的概念,而是通过实战总结的经验. 关于产品陈列设计要把握的几个原则是: 1. 让新用户轻松找到产品,快速熟悉产品目录 2. 让老用户第一时间看到上架的新品 3. 陈列的目的是让用户快速找到自己想找的商品 4. 在APP内形成逛的氛围 5. 在合适的位置推出主打产品! 6. 每个功能模块所展示的产品数量要合理 7. 陈列的图片规格既要节省空间又要清晰表达产品特征! 8. 陈列中巧用文字和数据的影响 9. 不要滥用广告图! 10. 把握陈列中引

laravel 5.5 《电商实战 》基础布局

我们需要为我们的项目构建一个基础的页面布局,布局文件统一存放在 resources/views/layouts 文件夹中,布局涉及的文件如下: app.blade.php —— 主要布局文件,项目的所有页面都将继承于此页面: _header.blade.php —— 布局的头部区域文件,负责顶部导航栏区块: _footer.blade.php —— 布局的尾部区域文件,负责底部导航区 我们先创建主要布局文件:resources/views/layouts/app.blade.php: $ mkd

03-Flutter移动电商实战-底部导航栏制作

1.cupertino_IOS风格介绍 在Flutter里是有两种内置风格的: material风格: Material Design 是由 Google 推出的全新设计语言,这种设计语言是为手机.平板电脑.台式机和其他平台提供一致,更广泛的外观和感觉.我喜欢称它为纸墨设计.Material Design 风格是一种非常有质感的设计风格,并会提供一些默认的交互动画. cupertino风格:即 IOS 风格组件,它重现了很多经典的有 IOS 特性的交互和界面风格,让适用于 IOS 的人感觉亲切和

Vue+Koa2移动电商实战 (五)mock数据使用和布局

前面我们已经获取到了数据,这节我们就好把它用到我们的项目中来.这节课我们主要是使用flex布局和for循环是我们的type_bar展示出来. 关于flex布局的话如果还不是很了解的小伙伴儿可以查阅下阮一峰大神的博客(http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html) 首页商品分类栏的布局 HTML: 我们采用v-for的方式将商品分类栏循环出来,并给了每个图片百分之九十的宽度,我这里因为第一张图片格式不对,多以单独添加了宽度的 <d

laravel 5.5 《电商实战 》安装应用

最近开始接触电商业务.公司打算采用lavarel做后端的开发,出于学习成本和时间的考虑.自己找到了一个不错的收费教程.这段时间会同步更新,分享自己的学习过程. 自己的开发环境,mac+nginx+mysql5.6+php7.1 注意,如果没有特别提示,分享中所有的命令执行都是在项目的根目录操作. 首先是版本的选择,因为要用于公司项目的开发,自己优先选择了LTS版本的laravel5.5 安装laravel很方便,直接输入指令 composer create-project laravel/lar