【Flutter】Dialog组件PageView组件

🔥 本文由 程序喵正在路上 原创,CSDN首发!
💖 系列专栏:Flutter学习
🌠 首发时间:2024年5月27日
🦋 欢迎关注🖱点赞👍收藏🌟留言🐾

目录

  • Dialog组件
    • AlertDialog和SimpleDialog
    • 底部弹出框showModalBottomSheet
    • Fluttertoast
    • 自定义Dailog
  • PageView组件
    • PageView的使用
    • PageView.builder
    • PageView上拉无限加载的实现思路
    • PageView实现无限轮播图
    • 定时器
    • 定时器加PageController实现动态轮播图

Dialog组件

AlertDialog和SimpleDialog

AlertDialogSimpleDialog 都必须在 showDialog 组件中使用,而且 SimpleDialog 中的选项需要使用 SimpleDialogOption 组件来定义。

我们新建一个页面 dialog.dart 专门来演示与弹出框有关的组件,其内容如下,记得将其添加到路由中:

import 'package:flutter/material.dart';

class DialogPage extends StatefulWidget {
  const DialogPage({super.key});

  
  State<DialogPage> createState() => _DialogPageState();
}

class _DialogPageState extends State<DialogPage> {
  void _alertDialog() async {
    var result = await showDialog(
        barrierDismissible: false, //表示点击灰色背景的时候是否消失弹出框
        context: context,
        builder: (context) {
          return AlertDialog(
            title: const Text("提示信息!"),
            content: const Text("您确定要删除吗"),
            actions: [
              TextButton(
                  onPressed: () {
                    Navigator.of(context)
                        .pop("确定"); //点击按钮让AlertDialog消失, 同时返回“确定”
                  },
                  child: const Text("确定")),
              TextButton(
                  onPressed: () {
                    Navigator.of(context).pop("取消");
                  },
                  child: const Text("取消"))
            ],
          );
        });

    print(result);
  }

  void _simpleDialog() async {
    var result = await showDialog(
        barrierDismissible: false, //表示点击灰色背景的时候是否消失弹出框
        context: context,
        builder: (context) {
          return SimpleDialog(
            title: const Text("请选择语言"),
            children: [
              SimpleDialogOption(
                onPressed: () {
                  Navigator.pop(context, "汉语");
                },
                child: const Text("汉语"),
              ),
              const Divider(),
              SimpleDialogOption(
                onPressed: () {
                  Navigator.pop(context, "英语");
                },
                child: const Text("英语"),
              ),
              const Divider(),
              SimpleDialogOption(
                onPressed: () {
                  Navigator.pop(context, "日语");
                },
                child: const Text("日语"),
              ),
              const Divider(),
            ],
          );
        });

    print(result);
  }

  void _modelBottomSheet() async {}

  void _toast() {}

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Dialog"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: _alertDialog,
              child: const Text('alert弹出框-AlertDialog '),
            ),
            const SizedBox(height: 20),
            ElevatedButton(
              onPressed: _simpleDialog,
              child: const Text('select弹出框-SimpleDialog'),
            ),
            const SizedBox(height: 20),
            ElevatedButton(
              onPressed: _modelBottomSheet,
              child: const Text('ActionSheet底部弹出框'),
            ),
            const SizedBox(height: 20),
            ElevatedButton(
              onPressed: _toast,
              child: const Text('Toast'),
            ),
            // fluttertoast
          ],
        ),
      ),
    );
  }
}

由于 showDialog 的返回类型为 Future,为了接收弹出框的返回信息,我们需要在函数后面加上 async,在 前面加上 await,并用一个变量 result 来接收。

顺便说一下 showDialog 中的 barrierDismissible 参数,所谓的灰色背景指的是屏幕中除了弹出框以外的地方。

home.dart 中,我们简单写了一个按钮,可以让页面跳转到 dialog.dart

import 'package:flutter/material.dart';

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          ElevatedButton(
            onPressed: () {
              Navigator.pushNamed(context, "/dialog");
            },
            child: const Text("Dialog测试"),
          ),
        ],
      ),
    );
  }
}

效果:

在这里插入图片描述

在这里插入图片描述

底部弹出框showModalBottomSheet

为了减小代码篇幅,下面只给出缺少的函数。

如果你想修改底部弹出框的高度,建议在其外部套上一个 Container 或者 SizedBox

void _modelBottomSheet() async {
  var result = await showModalBottomSheet(
      context: context,
      builder: (context) {
        return SizedBox(
          height: 240,
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              ListTile(
                title: const Text("分享"),
                onTap: () {
                  Navigator.of(context).pop("分享");
                },
              ),
              const Divider(),
              ListTile(
                title: const Text("收藏"),
                onTap: () {
                  Navigator.of(context).pop("收藏");
                },
              ),
              const Divider(),
              ListTile(
                title: const Text("取消"),
                onTap: () {
                  Navigator.of(context).pop("取消");
                },
              ),
              const Divider(),
            ],
          ),
        );
      });

  print(result);
}

效果:

在这里插入图片描述

Fluttertoast

如果你想实现屏幕上弹出一个提示信息,然后几秒后自动消失的效果,Flutter 中并没有这样的内置组件。这个时候我们可以使用一个第三方插件 —— Fluttertoast。

https://pub-web.flutter-io.cn/ 中搜索 fluttertoast 即可找到它,按照其使用手册即可轻松上手。

在这里插入图片描述

Readme 页面下滑,即可看到使用教程,非常简单,我们只要会复制粘贴即可:

在这里插入图片描述

记得引入 fluttertoast

void _toast() {
  Fluttertoast.showToast(
    msg: "提示信息",
    toastLength: Toast.LENGTH_LONG, //提示时间,只对android生效
    gravity: ToastGravity.CENTER, //出现位置
    timeInSecForIosWeb: 1, //提示时间,只对ios和web生效
    backgroundColor: Colors.black,
    textColor: Colors.white,
    fontSize: 16,
  );
}

在引入第三方插件后,记得重启项目,不能热加载,效果:

在这里插入图片描述

自定义Dailog

自定义 Dialog 对象,需要继承 Dialog 类,尽管 Dialog 提供了 child 参数可以用来写视图界面,但是往往会达不到我们想要的效果,因为默认的 Dialog 背景框是满屏的,不符合弹出框的特点。如果我们想完全定义界面,就需要重写 build 函数。

  1. 新建自定义组件 myDialog.dart

    InkWell 组件是 Flutter 中的一个特殊的交互式组件,它提供了水波纹效果和触摸事件处理能力。当用户点击 InkWell 组件时,它会显示一个水波纹动画效果,以指示用户的交互。除了点击事件外,InkWell 组件还可以处理其他手势事件,如长按、双击等。InkWell 通常用于包装其他可点击的组件,如按钮或列表项,以增强用户交互体验。

    import 'package:flutter/material.dart';
    
    class MyDialog extends Dialog {
      final String title; //标题
      final String content; //内容
      final Function()? onTap; //方便我们在外部获取其返回值
      const MyDialog(
          {super.key,
          required this.title,
          required this.content,
          required this.onTap});
      
      Widget build(BuildContext context) {
        return Material(
          type: MaterialType.transparency, //设置背景透明
          child: Center(
            //包裹在Center组件中,不然会全屏
            child: Container(
              height: 240,
              width: 240,
              color: Colors.white,
              child: Column(
                children: [
                  Padding(
                    padding: const EdgeInsets.all(5),
                    child: Stack(
                      children: [
                        Align(
                          alignment: Alignment.centerLeft,
                          child: Text(
                            title,
                            style: const TextStyle(fontSize: 18),
                          ),
                        ),
                        Align(
                          alignment: Alignment.centerRight,
                          child: InkWell(
                            onTap: onTap,
                            child: const Icon(Icons.close),
                          ),
                        )
                      ],
                    ),
                  ),
                  const Divider(),
                  Container(
                    padding: const EdgeInsets.all(10),
                    width: double.infinity,
                    child: Text(content, style: const TextStyle(fontSize: 14)),
                  )
                ],
              ),
            ),
          ),
        );
      }
    }
    
  2. 定义一个按钮,调用 MyDialog

    void _myDialog() async {
      var result = await showDialog(
          context: context,
          builder: (context) {
            return MyDialog(
              title: "提示!",
              content: "我是一个内容",
              onTap: () {
                Navigator.of(context).pop("自定义Dialog关闭");
              },
            );
          });
      print(result);
    }
    
  3. 效果

    在这里插入图片描述

PageView组件

Flutter 中的轮动图以及抖音上下滑页切换视频功能等等,这些都可以通过 PageView 轻松实现。

PageView 常见属性:

属性描述
scrollDirection默认为 Axis.horizontal:水平方法;Axis.vertical:垂直方向
children配置子元素
allowImplicitScrolling缓存当前页面的前后两页
onPageChangedpage改变的时候触发

PageView的使用

写一个 pageView.dart

import 'package:flutter/material.dart';

class PageViewPage extends StatefulWidget {
  const PageViewPage({super.key});

  
  State<PageViewPage> createState() => _PageViewPageState();
}

class _PageViewPageState extends State<PageViewPage> {
  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("PageView"),
      ),
      body: PageView(
        scrollDirection: Axis.vertical,
        children: [
          Center(
            child:
                Text("第1屏", style: Theme.of(context).textTheme.headlineLarge),
          ),
          Center(
            child:
                Text("第2屏", style: Theme.of(context).textTheme.headlineLarge),
          ),
          Center(
            child:
                Text("第3屏", style: Theme.of(context).textTheme.headlineLarge),
          ),
          Center(
            child:
                Text("第4屏", style: Theme.of(context).textTheme.headlineLarge),
          ),
          Center(
            child:
                Text("第5屏", style: Theme.of(context).textTheme.headlineLarge),
          ),
        ],
      ),
    );
  }
}

然后将其写在路由中,再在 home.dart 添加一个按钮用来跳转,效果就是可以上下滑动切换页面:

在这里插入图片描述

在这里插入图片描述

PageView.builder

PageView.builder 同理

import 'package:flutter/material.dart';

class PageViewBuilderPage extends StatefulWidget {
  const PageViewBuilderPage({super.key});

  
  State<PageViewBuilderPage> createState() => _PageViewBuilderPageState();
}

class _PageViewBuilderPageState extends State<PageViewBuilderPage> {
  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("pageViewBuilder"),
      ),
      body: PageView.builder(
          scrollDirection: Axis.vertical,
          itemCount: 6, //页数
          itemBuilder: (context, index) {
            return Center(
                child: Text("第$index屏",
                    style: Theme.of(context).textTheme.headlineLarge));
          }),
    );
  }
}

在这里插入图片描述

PageView上拉无限加载的实现思路

新建 pageViewFullPage.dart

import 'package:flutter/material.dart';

class PageViewFullPage extends StatefulWidget {
  const PageViewFullPage({super.key});

  
  State<PageViewFullPage> createState() => _PageViewFullPageState();
}

class _PageViewFullPageState extends State<PageViewFullPage> {
  final List<Widget> _list = [];

  
  void initState() {
    super.initState();
    for (var i = 0; i < 10; i++) {
      _list.add(MyPage(text: "第${i + 1}屏"));
    }
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text("pageview无限加载"),
        ),
        body: PageView(
          scrollDirection: Axis.vertical, // 滑动方向为垂直方向
          onPageChanged: (index) {
            //当页面快加载完时, 继续添加页面
            if (index + 2 == _list.length) {
              setState(() {
                for (var i = 0; i < 10; i++) {
                  _list.add(MyPage(text: "第${i + 1}屏"));
                }
              });
            }
          },
          children: _list,
        ));
  }
}

class MyPage extends StatefulWidget {
  final String text;
  const MyPage({super.key, required this.text});
  
  State<MyPage> createState() => _MyPageState();
}

class _MyPageState extends State<MyPage> {
  
  Widget build(BuildContext context) {
    return Center(
      child:
          Text(widget.text, style: Theme.of(context).textTheme.headlineLarge),
    );
  }
}

无限加载的效果就是,当我们上滑到第10屏后,再下滑就会回到第1屏

PageView实现无限轮播图

实现如下效果,有三张图片可以左右一直滑动,同时图片下方有圆点跟随移动:

在这里插入图片描述

新建 pageViewSwiper.dart

import 'package:flutter/material.dart';

class PageViewSwiperPage extends StatefulWidget {
  const PageViewSwiperPage({super.key});

  
  State<PageViewSwiperPage> createState() => _PageViewSwiperPageState();
}

class _PageViewSwiperPageState extends State<PageViewSwiperPage> {
  List<Widget> list = [];
  int _currentIndex = 0;

  
  void initState() {
    super.initState();
    list = const [
      ImagePage(
          src: "https://xixi-web-tlias.oss-cn-guangzhou.aliyuncs.com/1.jpg"),
      ImagePage(
          src: "https://xixi-web-tlias.oss-cn-guangzhou.aliyuncs.com/2.jpg"),
      ImagePage(
          src: "https://xixi-web-tlias.oss-cn-guangzhou.aliyuncs.com/3.jpg"),
    ];
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('PageView无限轮播图'),
      ),
      body: Stack(
        children: [
          SizedBox(
            height: 200,
            child: PageView.builder(
                onPageChanged: (index) {
                  setState(() {
                    _currentIndex = index % list.length;
                  });
                },
                itemCount: 1000,
                itemBuilder: (context, index) {
                  return list[index % list.length];
                }),
          ),
          Positioned(
            left: 0,
            right: 0, //设置left:0,right:0就会占满整行
            bottom: 2,
            child: Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: List.generate(list.length, (index) {
                return Container(
                  margin: const EdgeInsets.all(5),
                  width: 10,
                  height: 10,
                  decoration: BoxDecoration(
                      //图标下标和圆点下标一致时,圆点显示为蓝色; 否则为灰色
                      color: _currentIndex == index ? Colors.blue : Colors.grey,
                      shape: BoxShape.circle //圆
                      ),
                );
              }).toList(),
            ),
          )
        ],
      ),
    );
  }
}

class ImagePage extends StatefulWidget {
  final double height; //图片高度
  final double width; //图片宽度
  final String src; //图片地址
  const ImagePage(
      {super.key,
      this.height = 200,
      this.width = double.infinity,
      required this.src});

  
  State<ImagePage> createState() => _ImagePageState();
}

class _ImagePageState extends State<ImagePage> {
  
  Widget build(BuildContext context) {
    return SizedBox(
      height: widget.height,
      width: widget.width,
      child: Image.network(widget.src),
    );
  }
}

定时器

我们可以使用 Timer.periodic() 来创建定时器,需要导包:

import 'dart:async';
//创建定时器, 3秒
var timer = Timer.periodic(const Duration(seconds: 3), (t) {
  print('afterTimer=' + DateTime.now().toString());
});

组件销毁的时候取消定时器:

void dispose() {
  super.dispose();
  timer.cancel();
}

定时器加PageController实现动态轮播图

我们将前面实现的轮播图抽离出来,方便我们实现轮播图,同时加上定时器,让其定时切换页面,实现动态轮播图的效果。

抽离为 swiper.dart

import 'dart:async';
import 'package:flutter/material.dart';

class Swiper extends StatefulWidget {
  final double width;
  final double height;
  final List<String> list; //页面信息列表
  const Swiper(
      {super.key,
      this.height = 200,
      this.width = double.infinity,
      required this.list});

  
  State<Swiper> createState() => _SwiperState();
}

class _SwiperState extends State<Swiper> {
  int _currentIndex = 0;
  List<Widget> pageList = []; //页面列表
  late PageController _pageController;
  late Timer timer;

  
  void initState() {
    super.initState();
    //数据
    for (var i = 0; i < widget.list.length; i++) {
      pageList.add(ImagePage(
          width: widget.width, height: widget.height, src: widget.list[i]));
    }
    //PageController, 默认显示第一页
    _pageController = PageController(initialPage: 0);

    //定时器
    timer = Timer.periodic(const Duration(seconds: 3), (t) {
      //进行页面切换
      _pageController.animateToPage((_currentIndex + 1) % pageList.length,
          duration: const Duration(milliseconds: 300), curve: Curves.linear);
    });
  }

  
  void dispose() {
    super.dispose();
    timer.cancel();
    _pageController.dispose();
  }

  
  Widget build(BuildContext context) {
    return Stack(
      children: [
        SizedBox(
          height: 200,
          child: PageView.builder(
              controller: _pageController,
              onPageChanged: (index) {
                setState(() {
                  _currentIndex = index % pageList.length;
                });
              },
              itemCount: 1000,
              itemBuilder: (context, index) {
                return pageList[index % pageList.length];
              }),
        ),
        Positioned(
            left: 0,
            right: 0,
            bottom: 2,
            child: Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: List.generate(pageList.length, (index) {
                return Container(
                  margin: const EdgeInsets.all(5),
                  width: 10,
                  height: 10,
                  decoration: BoxDecoration(
                      color: _currentIndex == index ? Colors.blue : Colors.grey,
                      shape: BoxShape.circle //圆
                      ),
                );
              }).toList(),
            ))
      ],
    );
  }
}

class ImagePage extends StatelessWidget {
  final double width;
  final double height;
  final String src;
  const ImagePage(
      {super.key,
      this.width = double.infinity,
      this.height = 200,
      required this.src});

  
  Widget build(BuildContext context) {
    return SizedBox(
      width: width,
      height: height,
      child: Image.network(
        src,
        fit: BoxFit.cover,
      ),
    );
  }
}

pageViewSwiper.dart

import 'package:flutter/material.dart';
import '../widget/swiper.dart';

class PageViewSwiperPage extends StatefulWidget {
  const PageViewSwiperPage({super.key});

  
  State<PageViewSwiperPage> createState() => _PageViewSwiperPageState();
}

class _PageViewSwiperPageState extends State<PageViewSwiperPage> {
  List<String> list = [];

  
  void initState() {
    super.initState();
    list = [
      "https://xixi-web-tlias.oss-cn-guangzhou.aliyuncs.com/1.jpg",
      "https://xixi-web-tlias.oss-cn-guangzhou.aliyuncs.com/2.jpg",
      "https://xixi-web-tlias.oss-cn-guangzhou.aliyuncs.com/3.jpg",
      "https://xixi-web-tlias.oss-cn-guangzhou.aliyuncs.com/4.jpg",
    ];
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('PageViewSwiper'),
        ),
        body: ListView(
          children: [
            Swiper(list: list),
          ],
        ));
  }
}

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/649061.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

需求跟踪矩阵是什么?怎么创建?一文详解

一、什么是需求跟踪矩阵 对项目经理或产品经理来说&#xff0c;需求清单肯定不陌生&#xff0c;那什么是需求跟踪矩阵呢&#xff1f; 需求跟踪矩阵&#xff08;Requirement Track Matrix&#xff0c;简称RTM &#xff09;&#xff0c;是把产品需求从其来源连接到能满足需求的…

Spring中@Component注解

Component注解 在Spring框架中&#xff0c;Component是一个通用的注解&#xff0c;用于标识一个类作为Spring容器管理的组件。当Spring扫描到被Component注解的类时&#xff0c;会自动创建一个该类的实例并将其纳入Spring容器中管理。 使用方式 1、基本用法&#xff1a; Co…

[AI OpenAI] OpenAI 安全更新

AI 首尔峰会中分享我们的实践 我们自豪地构建并发布了在能力和安全性方面都处于行业领先地位的模型。 超过一亿用户和数百万开发者依赖于我们安全团队的工作。我们将安全视为我们必须在多个时间范围内投资并取得成功的事项&#xff0c;从使今天的模型与我们未来预期的更具能力…

【Spring Cloud】远程调用

目录 Spring Cloud Netflix Feign简介前言Feign是什么OpenFeign组件和Spring Cloud OpenFeignOpenFeign组件Spring Cloud OpenFeign OpenFeign-微服务接口调用需求说明1. 启动Eureka Server服务2.创建两个项目&#xff0c;将其注册到Eureka Server3.在服务提供者中添加业务处理…

如何处理逻辑设计中的时钟域

1.什么是时钟域 2.PLL对时钟域管理 不管是否需要变频变相&#xff0c;在FPGA内部将外部输入时钟从专用时钟引脚扇入后先做PLL处理。如何调用pll&#xff0c;见另一篇文章。 约束输入时钟 creat_clock -period 10 -waveform {0 5} [get_ports {sys_clk}] 3.单bit信号跨时钟…

【Linux进程篇】父子进程fork函数||进程生死轮回状态||僵尸进程与孤儿进程

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 前言&#xff1a;上篇文章中我们认识了进程&#xff0c;可执行程序在内存中加载运行被称作进程&#xff0c;而操作系统是通过给每一个可执行程序创建一个PCB来管理进程的。并且学习了一些查看进程的指令&#xff0c;认识…

Flask 蓝图路由的模块化开发

基于 Flask 蓝图路由的模块化开发 1. 编程目标 为了提高Flask应用的可维护性和可扩展性&#xff0c;我们通过使用Flask的蓝图(Blueprint)功能&#xff0c;可以将不同的功能模块拆分到独立的文件中&#xff0c;方便后续的开发和维护。 2. 项目结构 项目结构树如下&#xff1…

助力企业标准化搭建--图框模板的创建

古有秦皇书同文、车同轨&#xff0c;今各行各业都有国际标准、国家标准&#xff0c;其目的就是为了标准化、统一化&#xff0c;由此可见标准化的重要性&#xff1b;一个企业若是想规范员工的操作&#xff0c;推行标准化也很重要&#xff1b;因此对于需要绘制电气图纸的行业来说…

从0开始学统计-秩和检验

1.什么是秩和检验&#xff1f; 秩和检验&#xff0c;也称为Wilcoxon 秩和检验&#xff0c;是一种非参数统计检验方法&#xff0c;用于比较两个独立样本的中位数是否有显著差异。它不要求数据满足正态分布假设&#xff0c;因此适用于小样本或者数据不满足正态分布假设的情况。 …

2024年怎么下载学浪app视频

想要在2024年紧跟潮流&#xff0c;成为一名优秀的学浪用户吗&#xff1f;今天就让我们一起探索如何下载学浪app视频吧&#xff01; 学浪视频下载工具打包 学浪下载工具打包链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;1234 --来自百度网盘超级会员V10的分享…

性能怪兽!香橙派 Kunpeng Pro 开发板深度测评,带你解锁无限可能

性能怪兽&#xff01;香橙派 Kunpeng Pro 开发板深度测评&#xff0c;带你解锁无限可能 文章目录 性能怪兽&#xff01;香橙派 Kunpeng Pro 开发板深度测评&#xff0c;带你解锁无限可能一、背景二、香橙派 Kunpeng Pro 硬件规格概述三、使用准备与系统安装1️⃣、系统安装步骤…

字节面试:百亿级数据存储,怎么设计?只是分库分表吗?

尼恩&#xff1a;百亿级数据存储架构起源 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;经常性的指导小伙伴们改造简历。 经过尼恩的改造之后&#xff0c;很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会&#xff0c…

cuda 11.6 pytorch安装

在安装之前&#xff0c;需要先配置GPU环境&#xff08;安装CUDA和CudaNN) 命令行输入nvidia-smi&#xff0c;查看驱动信息 nvidia-smi 安装相应的CUDA 和CUDANN 验证&#xff1a;输入nvcc --version 或者nvcc -V 进行检查 nvcc --version nvcc -V 在anaconda里创建环境 con…

彭永东所交“答卷”道尽万般无奈,贝壳找房营收、利润双双锐减

就今年第一季度业绩披露后两日的股价变动来看&#xff0c;贝壳找房&#xff08;下称“贝壳”&#xff09;似乎并未在港股和美股市场取得预期的效果。 港股市场&#xff0c;截至5月24日收盘&#xff0c;贝壳-W&#xff08;HK:02423&#xff09;报收43.9港元/股&#xff0c;当日跌…

海外网红营销新趋势:“快闪式”营销如何迅速提升品牌曝光度

在当今数字化时代&#xff0c;海外网红营销已成为品牌迅速触达全球消费者、提升品牌曝光度和刺激销售的重要手段。其中&#xff0c;“快闪式”营销以其独特的时效性、创意性和互动性&#xff0c;成为品牌与海外网红合作的新趋势。本文Nox聚星将和大家探讨如何利用海外网红的影响…

梭住绿色,植梦WILL来,容声冰箱“节能森林计划”再启航

近日&#xff0c;容声冰箱再度开启了“节能森林计划”绿色公益之旅。 据「TMT星球」了解&#xff0c;此次活动深入到阿拉善荒漠化地带&#xff0c;通过实地考察和亲身体验&#xff0c;见证容声了“节能森林计划”项目的持续落地和实施效果。 2022年&#xff0c;容声冰箱启动了…

5个好用的AI写论文网站推荐

目录 1.AIQuora论文写作 2.passyyds 答辩PPT 3.AIPassgo论文降AIGC 4.文状元 5.passyyds论文写作 毕业论文是每个毕业生的痛&#xff0c;不管你是本科还是硕士要想顺利毕业你就不得不面对论文。然而&#xff0c;面对论文写作时常常感到无从下手&#xff1a;有时缺乏灵感&a…

微信小程序毕业设计-跑腿系统项目开发实战(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

ChAMP加载肺癌数据和分析甲基化数据流程

ChAMP加载肺癌数据和分析甲基化数据流程 1. 加载数据分析 #!/bin/evn R rm(list = ls()) library(rstudioapi) current_script_path <- getActiveDocumentContext()$path# 将路径转换为当前目录 current_directory <- dirname(current_script_path)# 设置当前工作目录 …

【数据结构】红黑树——领略天才的想法

个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 祝福语&#xff1a;愿你拥抱自由的风 目录 二叉搜索树 AVL树 红黑树概述 性质详解 效率对比 旋转操作 元素操作 代码实现 二叉搜索树 【数据结构】二叉搜索树-CSDN博客 AVL树 【数据结构】AVL树——平衡二叉搜索…