flutter:图片&stful 生命周期 (三)

简介: 本文档介绍了如何在Flutter中处理图片,包括加载网络图片、本地图片、创建圆形图片和带有圆角的图片,以及如何配置`pubspec.yaml`文件来添加资源文件。还展示了如何使用`AssetImage`对象来显示本地资源图片,并通过代码示例详细说明了这些操作的实现方法。最后,简要介绍了StatefulWidget的生命周期。

前言

在现代移动应用开发中,图像处理是一项不可或缺的功能,尤其是在用户体验日益重要的今天。Flutter,作为一个跨平台的开发框架,以其高效的性能和丰富的组件库,提供了多种简便的方法来加载和处理图片。无论是从网络加载动态内容,还是展示本地资源,Flutter 都能轻松应对。

图片

网络图片

https://www.itying.com/images/flutter/1.png
return Center(
      child: Container(
        width: 150,
        height: 150,
        decoration: BoxDecoration(
            color: Colors.blue
        ),
        child: Image.network(
          "https://tse4-mm.cn.bing.net/th/id/OIP-C.rFThJiI7O5BEtAjW2bx2bAHaHa?pid=ImgDet&rs=1",
          //覆盖满容器
          fit: BoxFit.cover,
          //  fit.Boxfit.fill
        ),
      ),
    );

圆形

return Container(
      width: 150,
      height: 150,
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.circular(40),
        image: DecorationImage(
          image: NetworkImage(
              "https://tse4-mm.cn.bing.net/th/id/OIP-C.rFThJiI7O5BEtAjW2bx2bAHaHa?pid=ImgDet&rs=1",
            )
        )
      ),
    );


本地加载图片

assets    为 根目录

flutter:
  assets:
  - assets/imgs/

设置依赖

return SizedBox(
      height: 150,
      width: 150,
      // 自带的 widget
      child: Image.asset("imgs/laying.jpg"),
    );

AssetImage 是一个 Flutter 自带的 ImageProvider 对象,用于在 Flutter 中提供一个本地资源图片

Image.asset("assets/imgs/laying.jpg",height: 300,width: 300,)
          image:AssetImage("./assets/imgs/laying.jpg"),



图片的使用

johns.blog.csdn.net

首先创建 assets 文件夹 在该文件夹下面创建  images/img

然后在pubspec.yaml  里面配置依赖

flutter:
  assets:
    - assets/images/
import 'package:flutter/material.dart';
class Echo extends StatefulWidget{
  const Echo({super.key});
  @override
  State<StatefulWidget> createState() {
   return _Echo();
  }
}
class _Echo extends State <Echo> with SingleTickerProviderStateMixin{
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
    home: Scaffold(
    appBar: AppBar(
    title: Text("资源文件使用"),
    leading: GestureDetector(
    onTap: (){
    Navigator.pop(context);
    },
    child: Icon(Icons.arrow_back_ios),
    ),
    ),
     body: Container(
    // 居中显示
    alignment: Alignment.center,
    // 垂直线性布局
      child: Column(
     mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
    Image(
    width: 200,
    height: 200,
    image: AssetImage("images/buy.jpg"),
    )
    ],
    ),
    ),
    ))
    ;
  }
  }
  @override
    Widget build(BuildContext context){
       return Container();
  }
  Widget buildImg(){
  return Image.asset(
    "assets/imgs/buy.jpg",
  );
  }
void main(List<String> args){
runApp(const MaterialApp(
  title: 'hello',
  home: Echo(),
));
}

使用网络图片

复制的为图片链接

image: NetworkImage("https://pic3.zhimg.com/v2-d3f40345bde9c7f7ad4f63cf7bdcdab2_r.jpg"),


圆形图片

ClipOval(
                    child: Image.asset(
                      "imgs/laying.jpg",
                      height: 50,
                      width: 50,
                    ),
                  )

头像

leading: CircleAvatar(
                          backgroundImage: AssetImage("imgs/noodle.jpg"),
                        ),


给图片加 圆角


Container(
              height: 60,
              width: 60,
              margin: EdgeInsets.only(left: 40, right: 40),
              decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(10),
                  image: DecorationImage(
                      image: AssetImage("images/laying.jpg"),
                      fit: BoxFit.cover)),
            ),


stful   生命周期


import 'package:flutter/material.dart';
class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);
  @override
  State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: test(),
      ),
    );
  }
}
class test extends StatefulWidget {
  test() {
    print("1.调用了test的contructor方法");
  }
  @override
  State<test> createState() {
    print("2.调用test的createState方法");
    return _testState();
  }
}
class _testState extends State<test> {
  _testState() {
    print("3.调用_testState的constructor方法");
  }
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    print("4.调用_setState 的init 方法");
  }
  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    print("6.调用 dispose  方法");
  }
  bool _checkValue = true;
  @override
  Widget build(BuildContext context) {
    print("5.build 的 方法");
    return Container(
      child: Row(
        children: [
          Checkbox(
              value: _checkValue,
              onChanged: (v) {
                this.setState(() {
                  _checkValue = v!;
                });
              }),
        ],
      ),
    );
  }
}










相关文章
|
缓存 Java 开发工具
Flutter的文本、图片和按钮使用
Flutter的文本、图片和按钮使用
116 0
|
存储 前端开发 文件存储
Flutter笔记:关于应用程序中提交图片作为头像
1. 头像选择与提交的一般步骤Flutter笔记关于应用程序中提交图片作为头像作者目 录1. 头像选择与提交的一般步骤2. 选择本地文件到头像的示例代码3. 将图像提交到后端1. 头像选择与提交的一般步骤image将处理后的图像作为用户的头像显示在应用程序中。您可以使用Image或小部件来加载和显示图像。这些步骤涵盖了从选择图像到上传、处理和显示图像的基本流程。请根据您的具体需求和后端实现来自定义这些步骤。此外,确保您的应用程序有适当的权限以访问设备上的相册或相机,这通常需要在和。
281 0
|
2月前
|
缓存
Flutter Image从网络加载图片刷新、强制重新渲染
Flutter Image从网络加载图片刷新、强制重新渲染
79 1
|
3月前
|
Shell Android开发 Python
Flutter如何正确使用图片资源
Flutter如何正确使用图片资源
41 0
|
3月前
Flutter生命周期方法小技巧
Flutter生命周期方法小技巧
25 0
|
3月前
Flutter-自定义图片3D画廊
Flutter-自定义图片3D画廊
79 0
|
3月前
|
Android开发 开发者
flutter 开发环境配置和生命周期学习
flutter 开发环境配置和生命周期学习
|
5月前
flutter 引用图片资源遇到的问题
flutter 引用图片资源遇到的问题
53 1
|
5月前
|
XML JSON 前端开发
【Flutter前端技术开发专栏】Flutter中的图片、视频与网络资源加载
【4月更文挑战第30天】Flutter是谷歌的开源前端框架,因其高性能、流畅UI和多端运行能力受开发者喜爱。本文聚焦于Flutter中的资源加载:使用`Image`组件加载静态、网络和本地图片;通过`video_player`库加载和播放视频;利用`http`包进行网络资源请求。掌握这些技巧将有助于提升Flutter应用的开发效率和质量。
42 0
【Flutter前端技术开发专栏】Flutter中的图片、视频与网络资源加载
|
5月前
|
编解码 缓存 调度
Flutter笔记:Flutter的应用生命周期状态(lifecycleState)管理
Flutter笔记:Flutter的应用生命周期状态(lifecycleState)管理
241 0