- Flutter 按钮组件 ElevatedButton 详解
帅次
Flutterflutterandroidiosmacosandroidstudiowebapptaro
目录1.引言2.ElevatedButton的基本用法3.主要属性4.自定义按钮样式4.1修改背景颜色和文本颜色4.2修改按钮形状和边框4.3修改按钮大小4.4阴影控制4.5水波纹效果5.结论相关推荐1.引言在Flutter中,ElevatedButton是一个常用的按钮组件,它带有背景颜色和阴影效果,适用于强调操作。ElevatedButton继承自ButtonStyleButton,相比Tex
- 2024年Flutter从入门到精通全网最全学习路线指南
高级技术工程师
flutterflutterflutter中文网flutter中文官方文档
随着移动开发技术的快速发展,Flutter作为Google推出的跨平台开发框架,以其高效的热重载、统一的UI开发体验和卓越的性能表现,正逐渐成为众多开发者青睐的首选工具。为了帮助广大编程爱好者及职业开发者在2024年更好地掌握Flutter技术,本文将为您呈现一套全面且深度的Flutter学习路线图。flutter中文网flutterflutter中文官方文档第一阶段:基础入门与环境配置了解Flu
- Flutter从0到1:构建跨平台应用的新选择
卓桢琳Blackbird
Flutter从0到1:构建跨平台应用的新选择去发现同类优质开源项目:https://gitcode.com/在移动开发领域,寻求一款既能提供高性能,又能实现跨平台的框架是开发者们永恒的话题。这就是我们要向您推荐的【Flutter从0到1】项目,它是一个详细、全面的Flutter学习资源库,旨在帮助初学者和有经验的开发者迅速掌握Flutter并构建出高质量的应用。项目简介Flutterfrom0t
- Flutter 从入门到进阶:构建跨平台应用的最佳实践
萧鼎
软硬件与前后端详解flutter
引言Flutter是Google推出的一款开源UI框架,能够帮助开发者使用Dart语言构建高性能、跨平台的移动、桌面和Web应用。它以“一次编写,到处运行”的特点吸引了众多开发者。Flutter采用自绘UI渲染引擎(Skia),能够提供原生级的性能体验。本文将从Flutter的基本概念入手,深入探讨其核心组件、状态管理、性能优化以及一些进阶技巧。1.Flutter的核心概念在学习Flutter之前
- flutter 解决 iPhone X 等刘海屏手机导航栏/底部黑线遮挡布局的方法
头发还没秃a
FlutterSafeArea导航栏/底部黑线遮挡刘海屏iPhoneXTabBar背景
在上一节(改变TabBar背景颜色的方法)中有发现的一个问题:在iPhoneX等刘海屏手机中,会出现页面被导航栏或者底部黑线遮挡的问题:解决办法有两种:使用以下代码获取手机状态栏和底部黑线的高度,然后设置Widget的Padding或者Margin://获取状态栏高度(上边距)finaldoubletopPadding=MediaQuery.of(context).padding.top;//获取
- Flutter如何实现导航状态栏透明
yuanlaile
flutterjavascript前端
Flutter如何实现导航状态栏透明,具体操作如下:Widgetbuild(BuildContextcontext){returnMaterialApp(title:'FlutterDemo',theme:ThemeData(colorScheme:ColorScheme.fromSeed(seedColor:Colors.deepPurple),useMaterial3:true,//状态栏字体
- Flutter中沉浸式状态栏的设置
啦啦啦种太阳wqz
flutter沉浸式状态栏
Flutter中沉浸式状态栏的设置沉浸式状态栏是什么?状态栏是指Android手机顶部显示手机状态信息的位置,Android从4.4版本开始新增了透明状态栏功能,状态栏可以自定义颜色背景,是titleBar能够和状态栏融为一体,增进沉浸感。状态栏默认为黑色半透明,设置沉浸式状态栏后,可以与标题栏颜色一致,效果如上图。如何实现沉浸式状态栏在flutter项目目录下找到android主入口页面Main
- Flutter 设置修改状态栏颜色
代码港湾
Flutterflutter
项目场景:大部分App都会修改状态栏颜色的需求,Flutter开发的App也是支持的。问题描述App首页状态栏默认用白色图标和文字那个,当切换到二级页面的时候,如果二级页面状态栏是黑色的,那么返回到首页会显示黑色的。解决方案:一般首页都是全透明的导航栏和状态栏,Scaffold记得加上这个属性extendBodyBehindAppBar:true非常关键的一个字段。Light和Dark关键代码如下
- Flutter中使用image_picker拍照并上传
aiguangyuan
Flutter移动端开发Flutter
1.安装插件配置image_picker插件。dependencies:flutter:sdk:flutterflutter_localizations:sdk:flutterdate_format:^1.0.6flutter_cupertino_date_picker:^1.0.26+2flutter_swiper:^1.1.6fluttertoast:^7.1.6http:^0.12.2flu
- Flutter桌面开发(三、widget布局与表单)
左钦杨
flutterjavascriptandroid
一、流式布局横铺或者竖着铺Row或者Column这俩都是有Children的就是可以有多个子元素例子:Row(Children:[Container(),Container(),Container(),])Container类似于html中的DIV可以设置背景border和宽度高度Container(decoration:BoxDecoration(image:DecorationImage(im
- Flutter container text 组件详解
mylgcs
flutterflutterandroid
Flutter文章目录Container组件是一个常用的可视化容器,可以用来包裹其他Widget,并且它可以设置自己的宽和高,边距,背景颜色等等。而Text组件则是用来显示文本的Widget,可以设置字体大小,颜色,字体样式等等。提示:如有雷同、请联系作者删除文章目录Flutter文章目录前言一、Container1.container组件详解2.用container实现一个自定义按钮二、text
- Flutter_学习记录_device_info_plus 插件获取设备信息
一人前行
flutter学习flutter
引入三方库device_info_plus导入头文件import'package:device_info_plus/device_info_plus.dart';获取设备信息的主要代码DeviceInfoPlugindeviceInfoPlugin=DeviceInfoPlugin();BaseDeviceInfodeviceInfo=awaitdeviceInfoPlugin.deviceInf
- Flutter 常用组件大全
笔沫拾光
flutter
Flutter常用组件大全Flutter提供了丰富的组件来构建UI,以下是常见的组件,按功能类别分类。1️⃣基础布局组件组件作用示例Container盒子容器,支持装饰、边距、大小Container(width:100,height:100,color:Colors.red)Padding内边距Padding(padding:EdgeInsets.all(10),child:Text("Hello
- mac M1 安装flutter
小泥人(倪)
macosflutter
M1安装Flutter1-官网下载flutterSDK盘符自己记好https://docs.flutter.dev/release/archive?tab=macos2-控制台配置环境变量open.zshrc/bash_profile//平常在哪配就打开哪个文件3-复制粘贴exportPATH="$PATH:/Users/xnr/Documents/flutter/bin:$PATH"//自己安装
- Flutter中使用Dio库封装网络请求服务工具类
Zender Han
Flutter知识学习指南flutterandroidios
在Flutter应用程序中,进行网络请求是非常常见的任务。Dio是一个强大的、易于使用的Dart包,用于处理HTTP请求。本篇博客将介绍如何封装Dio库,以及如何在Flutter应用中进行网络请求并取消请求。什么是Dio?Dio是一个基于Dart语言的强大的HTTP客户端库,用于与RESTAPI进行通信。它提供了许多功能,包括异步请求、拦截器支持、取消请求、文件下载和上传等。封装Dio网络请求库为
- Flutter:签名板封装
sunly_
Flutterflutterjavascript开发语言
签名板依赖安装#图片处理image:^4.1.3#签名signature:^5.4.1封装组件import'dart:typed_data';import'package:dogex/common/index.dart';import'package:ducafe_ui_core/ducafe_ui_core.dart';import'package:flutter/material.dart';
- flutter dio 组件源码解析1
阿旭哟嘿
flutter
dio使用方法看https://github.com/flutterchina/dio记录下dio配套组件dio_cookie_manager管理cookie的dio_http2_adapterhttp2适配器dio_smart_retry重试机制http_certificate_pinning配置固定证书比如就不能随意抓包curl_logger_dio_interceptorcurl生成器,比如
- HarmonyOS NEXT-Flutter混合开发之鸿蒙-代码实践
harmonyos-next
在Flutter三端分离模式下完成纯血鸿蒙混入的过程中,虽然官方文档提供了一定的指导,但实际操作中可能会遇到一些坑。以下是我在适配过程中的一些经验总结,供各位开发者参考如果有帮助点个赞。在混入过程中是基于咸鱼团队flutter_boost(这里不讨论和其他方案的差别)和自定义FlutterPlugin实现的。主要涉及内容:环境搭建Fluttermodule创建Futter引入flutter_boo
- flutter环境最新踩坑
爱学习的大牛123
androidstdioflutter
##Flutter开发常见问题排查与解决###1.项目初始化与依赖问题```bash#清理项目flutterclean#获取依赖flutterpubget#详细日志运行flutterrun-v```###2.网络和下载问题-网络慢可能导致依赖下载卡住-使用`-v`参数可查看详细日志-检查网络连接-可以尝试使用国内镜像源###3.Android设备认证与配置####设备连接前准备1.确保安装Andr
- iOS与Flutter相互通信
songhai11
Flutter专题
iOS与Flutter相互通信iOS项目加入Flutter接着上一篇继续,在原有iOS项目中加入Flutter后,就需要考虑如何通过原生跳转到flutter,如何原生与flutter进行通信。iOS原生跳转Flutter在ViewController控制器中,添加一个按钮–‘flutter跳转’;当点击按钮的时候,跳转进flutter页面。在跳转的地方,声明一个FlutterViewControl
- 三天斩获10万用户。零基础用ChatGPT+Flutter开发AI算命小程序,流量变现全流程
众口烁金
chatgptflutter人工智能小程序plotly
---##三天斩获10万用户!零基础用ChatGPT+Flutter开发AI算命小程序,流量变现全流程大揭秘!(附完整源码)**导语**:大学生靠“AI面相分析”小程序日入5万?2023最野路子曝光!无需算法基础,手把手教你用ChatGPT生成风水命理模型,Flutter快速开发上线,抓住玄学经济红利!(文末送开光版源码+裂变增长脚本)**关键词**:AI算命、ChatGPT变现、Flutter开
- flutter 如何与原生框架通讯安卓 和 ios
爱学习的大牛123
flutterflutter与原生通讯
在Flutter中与原生框架(Android和iOS)进行通信的主要方式是通过**平台通道(PlatformChannels)**。平台通道允许Flutter代码与原生代码进行双向通信。以下是详细的步骤和示例,说明如何在Flutter中与Android和iOS原生代码进行通信。###1.平台通道的基本概念平台通道是Flutter提供的一种机制,允许Dart代码与原生代码(Java/Kotlinfo
- 解决Flutter应用程序的兼容性问题
ios
哈喽呀,大家好呀,淼淼又来和大家见面啦,Flutter作为一个跨平台的移动应用开发框架,极大地简化了开发者同时在Android和iOS平台上构建应用的难度。然而,由于不同设备、操作系统版本以及Flutter框架本身的变化,开发者可能会面临一些兼容性问题。这一期淼淼将和大家一起探讨如何有效地解决和预防Flutter应用程序的兼容性问题,确保应用在各种环境下稳定运行。更新Flutter和依赖包保持Fl
- iOS开发 超详细Flutter开发环境搭建
weixin_40847622
flutterios
1、安装Flutter此文章针对针对移动开发者,关于Flutter环境搭建,仅供参考,也可参考官网1.1、下载FlutterSDK进入Flutter官网此网站为中国网站,无需即可进入进入后,此处便为FlutterSDK下载地址了,根据自己的操作系统选择(本人为MacOS系统,下面以本人电脑为例操作)。
- flutter的HTTP headers用法介绍
云水-禅心
FlutterflutterHttpClient
flutter的HTTPheaders用法介绍在Flutter中,HTTPheaders是用于在发送HTTP请求时传递额外信息的关键部分。它们可以用于身份验证、缓存控制、内容类型声明等。以下是关于Flutter中HTTPheaders的详细说明和用法。1.什么是HTTPHeaders?HTTPheaders是键值对(key-valuepairs),用于在客户端和服务器之间传递附加信息。例如:Con
- Flutter 加载网络图片之:FadeInImage + Image.network
zeqiao
FlutterflutterFadeInImageImage.networkgif回调
想实现的效果:1、通过网络url加载图片(支持gif)2、加载之前使用默认占位图3、加载出现问题后要做兜底处理其实可以通过先将图片资源加载到本地文件中,然后读出来设置,虽然要绕一圈,但不失为一个好方案。但是,为了熟悉Flutter的图片相关知识,还是采用官方提供的API来试着实现。下面是最终方案:FadeInImage(image:_addImageLoadListener(imageUrl),/
- Flutter中网络图片加载和缓存
Flutter编程指南
FlutterFlutterAPPDarthttp跨平台技术
文章目录前言重温小部件ImageImage.network源码分析实际问题解决方案代码实现自定义ImageProvider使用写在最后前言应用开发中经常会碰到网络图片的加载,通常我们会对图片进行缓存,以便下次加载同一张图片时不用再重新下载,在包含有大量图片的应用中,会大幅提高图片展现速度、提升用户体验且为用户节省流量。Flutter本身提供的ImageWidget已经实现了加载网络图片的功能,且具
- Flutter Image.network()加载图片报403错误
qianxiamuxin
Flutterflutterandroidwebviewwebappandroidstudioiosgradle
Flutter报错403原因========Exceptioncaughtbyimageresourceservice================================================ThefollowingNetworkImageLoadExceptionwasthrownresolvinganimagecodec:HTTPrequestfailed,statusC
- flutter Image.network()网络图片加载失败,404错误的异常处理和解决方法初探
jp192021
flutterdebugflutter
今天碰到一个让人异常头疼的错误:在使用Image.network()的时候,有个图片网址404了,flutter真机调试一直卡死,绝对是一个大BUG。网上找了各种方法:一:Imageimage=Image(image:newCachedNetworkImageProvider(''));Imageimage=Image.network('');finalImageStreamstream=imag
- Flutter——最详细原生交互(MethodChannel、EventChannel、BasicMessageChannel)使用教程
怀君
flutterandroidKotlinflutter交互Flutter与原生交互
MethodChannel(方法通道)用途:实现双向通信,用于调用原生平台提供的API并获取返回结果。场景:适合一次性操作,如调用相机、获取设备信息等。使用步骤:Flutter端:通过MethodChannel监听事件流。staticconstplatform=MethodChannel('com.example.fltest.plugin.DeviceInfoPlugin');Android端(
- PHP,安卓,UI,java,linux视频教程合集
cocos2d-x小菜
javaUIPHPandroidlinux
╔-----------------------------------╗┆
- 各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
bozch
.net.net mvc
在.net mvc5中,在执行某一操作的时候,出现了如下错误:
各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
经查询当前的操作与错误内容无关,经过对错误信息的排查发现,事故出现在数据库迁移上。
回想过去: 在迁移之前已经对数据库进行了添加字段操作,再次进行迁移插入XXX字段的时候,就会提示如上错误。
&
- Java 对象大小的计算
e200702084
java
Java对象的大小
如何计算一个对象的大小呢?
 
- Mybatis Spring
171815164
mybatis
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
CustomerService userService = (CustomerService) ac.getBean("customerService");
Customer cust
- JVM 不稳定参数
g21121
jvm
-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。当然这是在非合理设置的前提下,如果此类参数设置合理讲大大提高JVM 的性能及稳定性。 可以说“不稳定参数”
- 用户自动登录网站
永夜-极光
用户
1.目标:实现用户登录后,再次登录就自动登录,无需用户名和密码
2.思路:将用户的信息保存为cookie
每次用户访问网站,通过filter拦截所有请求,在filter中读取所有的cookie,如果找到了保存登录信息的cookie,那么在cookie中读取登录信息,然后直接
- centos7 安装后失去win7的引导记录
程序员是怎么炼成的
操作系统
1.使用root身份(必须)打开 /boot/grub2/grub.cfg 2.找到 ### BEGIN /etc/grub.d/30_os-prober ### 在后面添加 menuentry "Windows 7 (loader) (on /dev/sda1)" { 
- Oracle 10g 官方中文安装帮助文档以及Oracle官方中文教程文档下载
aijuans
oracle
Oracle 10g 官方中文安装帮助文档下载:http://download.csdn.net/tag/Oracle%E4%B8%AD%E6%96%87API%EF%BC%8COracle%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3%EF%BC%8Coracle%E5%AD%A6%E4%B9%A0%E6%96%87%E6%A1%A3 Oracle 10g 官方中文教程
- JavaEE开源快速开发平台G4Studio_V3.2发布了
無為子
AOPoraclemysqljavaeeG4Studio
我非常高兴地宣布,今天我们最新的JavaEE开源快速开发平台G4Studio_V3.2版本已经正式发布。大家可以通过如下地址下载。
访问G4Studio网站
http://www.g4it.org
G4Studio_V3.2版本变更日志
功能新增
(1).新增了系统右下角滑出提示窗口功能。
(2).新增了文件资源的Zip压缩和解压缩
- Oracle常用的单行函数应用技巧总结
百合不是茶
日期函数转换函数(核心)数字函数通用函数(核心)字符函数
单行函数; 字符函数,数字函数,日期函数,转换函数(核心),通用函数(核心)
一:字符函数:
.UPPER(字符串) 将字符串转为大写
.LOWER (字符串) 将字符串转为小写
.INITCAP(字符串) 将首字母大写
.LENGTH (字符串) 字符串的长度
.REPLACE(字符串,'A','_') 将字符串字符A转换成_
- Mockito异常测试实例
bijian1013
java单元测试mockito
Mockito异常测试实例:
package com.bijian.study;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.
- GA与量子恒道统计
Bill_chen
JavaScript浏览器百度Google防火墙
前一阵子,统计**网址时,Google Analytics(GA) 和量子恒道统计(也称量子统计),数据有较大的偏差,仔细找相关资料研究了下,总结如下:
为何GA和量子网站统计(量子统计前身为雅虎统计)结果不同?
首先:没有一种网站统计工具能保证百分之百的准确出现该问题可能有以下几个原因:(1)不同的统计分析系统的算法机制不同;(2)统计代码放置的位置和前后
- 【Linux命令三】Top命令
bit1129
linux命令
Linux的Top命令类似于Windows的任务管理器,可以查看当前系统的运行情况,包括CPU、内存的使用情况等。如下是一个Top命令的执行结果:
top - 21:22:04 up 1 day, 23:49, 1 user, load average: 1.10, 1.66, 1.99
Tasks: 202 total, 4 running, 198 sl
- spring四种依赖注入方式
白糖_
spring
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我
- angular.injector
boyitech
AngularJSAngularJS API
angular.injector
描述: 创建一个injector对象, 调用injector对象的方法可以获得angular的service, 或者用来做依赖注入. 使用方法: angular.injector(modules, [strictDi]) 参数详解: Param Type Details mod
- java-同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待
bylijinnan
Integer
public class PC {
/**
* 题目:生产者-消费者。
* 同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待。
*/
private static final Integer[] val=new Integer[10];
private static
- 使用Struts2.2.1配置
Chen.H
apachespringWebxmlstruts
Struts2.2.1 需要如下 jar包: commons-fileupload-1.2.1.jar commons-io-1.3.2.jar commons-logging-1.0.4.jar freemarker-2.3.16.jar javassist-3.7.ga.jar ognl-3.0.jar spring.jar
struts2-core-2.2.1.jar struts2-sp
- [职业与教育]青春之歌
comsci
教育
每个人都有自己的青春之歌............但是我要说的却不是青春...
大家如果在自己的职业生涯没有给自己以后创业留一点点机会,仅仅凭学历和人脉关系,是难以在竞争激烈的市场中生存下去的....
&nbs
- oracle连接(join)中使用using关键字
daizj
JOINoraclesqlusing
在oracle连接(join)中使用using关键字
34. View the Exhibit and examine the structure of the ORDERS and ORDER_ITEMS tables.
Evaluate the following SQL statement:
SELECT oi.order_id, product_id, order_date
FRO
- NIO示例
daysinsun
nio
NIO服务端代码:
public class NIOServer {
private Selector selector;
public void startServer(int port) throws IOException {
ServerSocketChannel serverChannel = ServerSocketChannel.open(
- C语言学习homework1
dcj3sjt126com
chomework
0、 课堂练习做完
1、使用sizeof计算出你所知道的所有的类型占用的空间。
int x;
sizeof(x);
sizeof(int);
# include <stdio.h>
int main(void)
{
int x1;
char x2;
double x3;
float x4;
printf(&quo
- select in order by , mysql排序
dcj3sjt126com
mysql
If i select like this:
SELECT id FROM users WHERE id IN(3,4,8,1);
This by default will select users in this order
1,3,4,8,
I would like to select them in the same order that i put IN() values so:
- 页面校验-新建项目
fanxiaolong
页面校验
$(document).ready(
function() {
var flag = true;
$('#changeform').submit(function() {
var projectScValNull = true;
var s ="";
var parent_id = $("#parent_id").v
- Ehcache(02)——ehcache.xml简介
234390216
ehcacheehcache.xml简介
ehcache.xml简介
ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义CacheManager的配置信息的。根据之前我们在《Ehcache简介》一文中对CacheManager的介绍我们知道一切Ehcache的应用都是从CacheManager开始的。在不指定配置信
- junit 4.11中三个新功能
jackyrong
java
junit 4.11中两个新增的功能,首先是注解中可以参数化,比如
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runn
- 国外程序员爱用苹果Mac电脑的10大理由
php教程分享
windowsPHPunixMicrosoftperl
Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因:
1、Mac OS X 是基于 Unix 的
这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到。如果你是个 wi
- 位运算、异或的实际应用
wenjinglian
位运算
一. 位操作基础,用一张表描述位操作符的应用规则并详细解释。
二. 常用位操作小技巧,有判断奇偶、交换两数、变换符号、求绝对值。
三. 位操作与空间压缩,针对筛素数进行空间压缩。
&n
- weblogic部署项目出现的一些问题(持续补充中……)
Everyday都不同
weblogic部署失败
好吧,weblogic的问题确实……
问题一:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [zip:E:/weblogic/user_projects/domains/base_domain/serve
- tomcat7性能调优(01)
toknowme
tomcat7
Tomcat优化: 1、最大连接数最大线程等设置
<Connector port="8082" protocol="HTTP/1.1"
useBodyEncodingForURI="t
- PO VO DAO DTO BO TO概念与区别
xp9802
javaDAO设计模式bean领域模型
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在O/R Mapping的世界里,有两个基本的也是重要的东东需要了解,即VO,PO。
它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(指的是他们的属性)。这样,PO独立出来,数据持