Flutter MVP 项目教程

Flutter MVP 项目教程

flutter_mvp使用Flutter MVP结构开发的短视频类小项目,加入各种平滑的过渡动画。欢迎Star或Fork!项目地址:https://gitcode.com/gh_mirrors/fl/flutter_mvp

1. 项目的目录结构及介绍

flutter_mvp/
├── lib/
│   ├── data/
│   │   ├── models/
│   │   ├── repositories/
│   ├── domain/
│   │   ├── entities/
│   │   ├── usecases/
│   ├── presentation/
│   │   ├── pages/
│   │   ├── widgets/
│   ├── injection_container.dart
│   ├── main.dart
├── test/
├── pubspec.yaml

目录结构介绍

  • lib/: 项目的主要代码文件夹。
    • data/: 包含数据层的相关文件,如数据模型和数据仓库。
      • models/: 存放数据模型类。
      • repositories/: 存放数据仓库类。
    • domain/: 包含领域层的相关文件,如实体和用例。
      • entities/: 存放领域实体类。
      • usecases/: 存放用例类。
    • presentation/: 包含表示层的相关文件,如页面和组件。
      • pages/: 存放页面类。
      • widgets/: 存放自定义组件类。
    • injection_container.dart: 依赖注入配置文件。
    • main.dart: 项目的主入口文件。
  • test/: 包含测试文件。
  • pubspec.yaml: 项目的配置文件。

2. 项目的启动文件介绍

main.dart

import 'package:flutter/material.dart';
import 'injection_container.dart' as di;
import 'presentation/pages/home_page.dart';

void main() {
  di.init();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter MVP',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomePage(),
    );
  }
}

文件介绍

  • main(): 程序的入口函数,初始化依赖注入并运行应用。
  • MyApp: 应用的根组件,配置应用的主题和首页。

3. 项目的配置文件介绍

pubspec.yaml

name: flutter_mvp
description: A new Flutter project.
version: 1.0.0+1

environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.2

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^1.0.0

flutter:
  uses-material-design: true

文件介绍

  • name: 项目的名称。
  • description: 项目的描述。
  • version: 项目的版本号。
  • environment: 指定 Dart SDK 的版本范围。
  • dependencies: 项目的依赖库。
  • dev_dependencies: 开发环境的依赖库。
  • flutter: Flutter 相关的配置,如使用 Material Design。

flutter_mvp使用Flutter MVP结构开发的短视频类小项目,加入各种平滑的过渡动画。欢迎Star或Fork!项目地址:https://gitcode.com/gh_mirrors/fl/flutter_mvp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

NineGridImageView 是一个九宫格图片控件。用法1. 首先添加依赖compile 'com.jaeger.ninegridimageview:library:1.0.0'2. 在布局文件中添加 NineGridImageView, 如下所示:nineGridImageView.setAdapter(nineGridViewAdapter);下面是 NineGridImageViewAdapter.class 的源码:public abstract class NineGridImageViewAdapter {     protected abstract void onDisplayImage(Context context, ImageView imageView, T t);     protected void onItemImageClick(Context context, int index, List list) {          }     protected ImageView generateImageView(Context context) {         GridImageView imageView = new GridImageView(context);         imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);         return imageView;     }}T 是你图片的数据类型, 你可以简单的使用 String 类型也可以是你自定义的类型;你必须重写 onDisplayImage(Context context, ImageView imageView, T t) 方法去设置显示图片的方式, 你可以使用 Picasso、Glide 、ImageLoader 或者其他的图片加载库,你也可以给 ImageView 设置一个占位图;如果你需要处理图片的点击事件,你可以重写 onItemImageClick(Context context, int index, List list) 方法,加上你自己的处理逻辑;如果你要使用自定义的 ImageView,你可以重写 generateImageView(Context context) 方法, 去生成自定的 ImageView。下面是一段示例代码:private NineGridImageViewAdapter mAdapter = new NineGridImageViewAdapter() { @Override protected void onDisplayImage(Context context, ImageView imageView, Photo photo) { Picasso.with(context)                     .load(photo.getSmallUrl)                     .placeholder(R.drawable.ic_default_image)                     .into(imageView);             }         @Override         protected ImageView generateImageView(Context context) {             return super.generateImageView(context);         }         @Override         protected void onItemImageClick(Context context, int index, List photoList) {            showBigPicture(context, photoList.get(index).getBigUrl());         }     };         ... mNineGridImageView.setAdapter(mAdapter);...4. 给 NineGridImageView 设置图片数据:nineGridImageView.setImagesData(List imageDataList);图片展示:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲁通彭Mercy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值