【Flutter -- 基础组件】Flutter 页面

2023-11-04

在这里插入图片描述

Flutter 有显示的 Widget 和完整页面呈现的 Widget,常见的有 MaterialApp、Scaffold、Appbar、Text、Image、Button,下面以思维导图形式简单列一下:
在这里插入图片描述

1. MaterialApp

1.1 代码

import 'package:flutter/material.dart';
//使用`flutter/material.dart` 目的是使用Matrial风格的小控件
void main(){
  //运行程序
  runApp(MyApp());
}

//用无状态控件显示
class MyApp extends StatelessWidget{
  
  @override
  Widget build(BuildContext context){
    return MaterialApp(
      //标题
      title:'Widget_Demo',
      //主题色
      theme:ThemeData(
        //设置为蓝色
        primarySwatch: Colors.blue
      ),
      //这是一个Widget对象,用来定义当前应用打开的时候,所显示的界面
      home:MyHomePage(),
    );
  }
}


class MyHomePage extends StatelessWidget{
  
  @override
  Widget build(BuildContext context){
     return Scaffold(
       //设置appbar
       appBar:new AppBar(
         title:new Text('This is a Demo'),
       ),
       //主体
       body:new Center(
         //在屏幕中央显示一个文本
         child:new Text('Hello'),
       ),
     );
  }
}

1.2 效果图

在这里插入图片描述

2. Scaffold

上面例子 home:MyHomePage() 这里返回了 ScaffoldWidget ,而这个 Widget 正是我们所看到的页面,看到 Scaffold 包含了 appBarbody,一开始说到,Scaffold 也包含 Drawers,下面实现一下:

2.1 代码

  @override
  Widget build(BuildContext context){
     return Scaffold(
       //设置appbar
       appBar:new AppBar(
         title:new Text('This is a Demo'),
       ),
       //主体
       body:new Center(
         //在屏幕中央显示一个文本
         child:new Text('Hello'),
       ),
       //左侧抽屉
       drawer:Drawer(
         //添加一个空的ListView
         child:ListView(),
       ),
     );
  }

2.2 效果图

在这里插入图片描述
下面往抽屉里添加点东西,就添加 ListView,代码如下:

       //左侧抽屉
       drawer:Drawer(
         child:ListView(
           //设置padding
           padding:EdgeInsets.zero,
           children: <Widget>[
             //据说这里可以替换自定义的header
             //userHeader,
             ListTile(
               //标题内容
               title: Text("This is Item_one"),
               //前置图标
               leading: new CircleAvatar(child:new Icon(Icons.scanner),),
             ),
             ListTile(
               //标题内容
               title: Text("This is Item_two"),
               //前置图标
               leading: new CircleAvatar(child:new Icon(Icons.list),),
             ),
             ListTile(
               //标题内容
               title: Text("This is Item_three"),
               //前置图标
               leading: new CircleAvatar(child:new Icon(Icons.score),),
             ),
           ],
         ),
       ),

3. AppBar

3.1 代码

      //设置appbar
      appBar: new AppBar(
        //AppBar内容显示
        title: new Text('This is a Demo'),
        //前置图标
        leading: new Icon(Icons.home),
        //背景颜色 改为红色
        backgroundColor: Colors.red,
        //设置为标题内容居中
        centerTitle: true,
        //一个 Widget 列表,代表 Toolbar 中所显示的菜单,
        // 对于常用的菜单,通常使用 IconButton 来表示;对于不常用的菜单通常使用 PopupMenuButton 来显示为三个点,点击后弹出二级菜单
        actions: <Widget>[
          //IconButton
          new IconButton(
            //图标
            icon: new Icon(Icons.add_a_photo),
            //提示
            tooltip: 'Add photo',
            //点击事件
            onPressed: () {},
          ),
          //菜单弹出按钮
          new PopupMenuButton<String>(
            itemBuilder: (BuildContext context) {
              return <PopupMenuItem<String>>[
                new PopupMenuItem<String>(
                    value: "one", child: new Text('This one')),
                new PopupMenuItem<String>(
                    value: "two", child: new Text('This two')),
              ];
            },
            //选择点击事件
            onSelected: (String action) {
              switch (action) {
                case "one":
                //增加点击逻辑
                  break;
                case "two":
                //增加点击逻辑
                  break;
              }
            },
          ),
        ],
      ),

3.2 效果图

在这里插入图片描述

4. Text

4.1 代码

下面用Text来展示文本,把上面例子用文本显示中间的 Hello 单独抽出来,如下:

   //主体
 body: new Center(
      //在屏幕中央显示一个文本 改为自定义样式
      child: new CustomTextStyle('This is a Text'),
 ),
      
//单独文本样式
class CustomTextStyle extends StatelessWidget{
  String text;
  //构造函数 参数外部传进来
  CustomTextStyle(this.text);
  @override
  Widget build(BuildContext context){
    return Text(text ?? "Hello");

  }
}

下面把文本字体大小修改,字体样式修改,背景颜色改改:

//文本 : 单独文本样式
class CustomTextStyle extends StatelessWidget {
  Paint pg = Paint();
  String text;

  //构造函数 参数外部传进来
  CustomTextStyle(this.text);

  @override
  Widget build(BuildContext context) {
    //设置画笔颜色为黑色
    pg.color = Color(0xFF000000);
    return Text(
      text ?? "Hello",
      style: TextStyle(
          //颜色
          color: Colors.blue,
          //字体大小
          fontSize: 14,
          //字体加粗
          fontWeight: FontWeight.bold,
          //文本背景颜色
          background: pg),
    );
  }
}

4.2 效果图

在这里插入图片描述
还有很多的属性,根据需要去设置就行:

 const TextStyle({
    this.inherit = true,
    this.color,//文本样式
    this.fontSize,//字体大小
    this.fontWeight,//绘制文本时的字体粗细
    this.fontStyle,//字体变体
    this.letterSpacing,//水平字母之间的空间间隔(逻辑像素为单位),可以负值
    this.wordSpacing,//单词之间添加的空间间隔(逻辑像素为单位),可以负值
    this.textBaseline,//对齐文本的水平线
    this.height,//文本行与行的高度,作为字体代销的倍数
    this.locale,//用于选择区域定字形的语言环境
    this.foreground,//文本的前景色,不能与color共同设置
    this.background,//文本背景色
    this.shadows,//Flutter Decoration背景设定(边框,圆角,阴影,渐变等)
    this.decoration,//绘制文本装饰,添加上下划线,删除线
    this.decorationColor,//文本装饰的颜色
    this.decorationStyle,//文本装饰的样式,控制画虚线,点,波浪线
    this.debugLabel,
    String fontFamily,//使用字体的名称
    String package,
  })

5. RichText

5.1 代码

这是显示丰富样式的文本,这什么意思呢?Text 只能显示一种样式的文字,如果想在一段文字中显示多种样式,就好像 Android 里面的 SpannableString,就需要使用 RichText,直接上代码:

//富文本样式
class RichWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return RichText(
        text: TextSpan(
          text: 'This is RichText',
          style: new TextStyle(
            //false的时候不显示
              inherit: true,
              //字体大小
              fontSize: 16,
              //黑色
              color: Colors.black
          ),
          children: <TextSpan>[
            new TextSpan(
              text: 'Android艺术探索',
              style: new TextStyle(
                color: Colors.redAccent,
                //字体粗细
                fontWeight: FontWeight.bold,
              ),

            ),

            new TextSpan(text: '第一行代码'),
            new TextSpan(
              text: 'Android进阶之光',
              style: new TextStyle(
                color: Colors.indigo,
                //字体样式
                fontSize: 20,
              ),
            )
          ],
        )
    );
  }
}

//屏幕中间改为富文本widget
  //主体
      body: new Center(
        //Text在屏幕中央显示一个文本 改为自定义样式
        //child: new CustomTextStyle('This is a Text'),
        //富文本
          child:new RichWidget()
      ),

5.2 效果图

在这里插入图片描述

6. TextField

6.1 代码

下面看看文本输入框,文本输入框平时会经常用到:

body: new Center(
   //Text在屏幕中央显示一个文本 改为自定义样式
   //child: new CustomTextStyle('This is a Text'),
   //富文本
   //child:new RichWidget()
   //文本输入框
     child:new TextFieldWidget()
),

//文本输入框
class TextFieldWidget extends StatelessWidget{
  @override
  Widget build(BuildContext context){
      return TextField();
  }
}

上面例子只能输入文本内容,如果想要获取输入框内容,就要添加一个controller,通过这个controller添加通知来获取TextField的值,我们一般点击按钮或者需要跟后台交互就要读取controller.text的值:

class MyHomePage extends StatelessWidget {
  //获取TextEditingController
  final editController = TextEditingController();
            //IconButton
          new IconButton(
            //图标
            icon: new Icon(Icons.add_a_photo),
            //提示
            tooltip: 'Add photo',
            //点击事件
            onPressed: () {
              //输出
              print('text inputted: ${editController.text}');
              //Toast
              Fluttertoast.showToast(
                  msg:'text inputted: ${editController.text}',
                  toastLength: Toast.LENGTH_SHORT,
                  gravity: ToastGravity.CENTER,
                  timeInSecForIos: 1,
              );
            },
          ),
     ....
       //主体
      body: new Center(
        //Text在屏幕中央显示一个文本 改为自定义样式
        //child: new CustomTextStyle('This is a Text'),

        //富文本
        //child:new RichWidget()

        //文本输入框 以构造函数传递controller
          child:new TextFieldWidget(editController)
      ),
}
//文本输入框
class TextFieldWidget extends StatelessWidget{

  final controller;
  //构造函数传值
  TextFieldWidget(this.controller);
  @override
  Widget build(BuildContext context){
      return TextField(
        controller: controller,
      );
  }
}

注意上面用到了Toast,Toast库这里很简单需要两步:

  1. pubspec.yaml添加依赖库fluttertoast: ^2.1.1
  2. 导入import 'package:fluttertoast/fluttertoast.dart';

6.2 效果图

重新运行即可,热重载可能会出现异常。运行在 iOS 模拟器需要装 brewCocoaPods,有问题运行flutter doctor,它真是如名字一样,就是帮你诊断有没有错误信息,会显示具体信息。效果如下:
在这里插入图片描述
下面改一下样式:

      return TextField(
        controller: controller,
        //最大长度,右下角会显示一个输入数量的字符串
        maxLength: 26,
        //最大行数
        maxLines: 1,
        //是否自动更正
        autocorrect: true,
        //是否自动对焦
        autofocus: true,
        //设置密码 true:是密码 false:不是秘密
        obscureText: true,
        //文本对齐样式
        textAlign: TextAlign.center,

      );

效果如下:
在这里插入图片描述

7. Image

7.1 从 asset 中加载图片

1. 在工程根目录下创建一个 images 目录,并将图片 avatar.png 拷贝到该目录。
在这里插入图片描述
2. 在 pubspec.yaml 中的 flutter 部分添加如下内容:

  assets:
    - images/avatar.png

在这里插入图片描述

注意: 由于 yaml 文件对缩进严格,所以必须严格按照每一层两个空格的方式进行缩进,此处 assets 前面应有两个空格。

3. 加载该图片

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',

      home: Scaffold(
        appBar: AppBar(
          title: Text('图片 & Icon'),
        ),
          body: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              const Text("1.图片",
                textScaleFactor: 1.2,
              ),

              Image(
                  image: AssetImage("images/avatar.png"),
                  width: 100.0
              ),
            ],
          )
      )
    );
  }
}
  • 效果图
    在这里插入图片描述

Image 也提供了一个快捷的构造函数 Image.asset 用于从 asset 中加载、显示图片:

	Image.asset("images/avatar.png",
                width: 100.0,
    ),

7.2 从网络加载图片

  • 代码
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',

      home: Scaffold(
        appBar: AppBar(
          title: Text('图片 & Icon'),
        ),
          body: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              const Text("1.图片",
                textScaleFactor: 1.2,
              ),

              Image(
                image: NetworkImage(
                    "https://flutter.github.io/assets-for-api-docs/assets/widgets/owl.jpg"),
                width: 200.0,
              ),
            ],
          )
      )

    );
  }
}
  • 效果图
    在这里插入图片描述

Image 也提供了一个快捷的构造函数 Image.network 用于从网络加载、显示图片:

Image.network(
  "https://flutter.github.io/assets-for-api-docs/assets/widgets/owl.jpg",
  width: 200.0,
)

7.3.声明分辨率相关的图片

另外 Flutter 可以为当前设备添加合适其分辨率的图像,其实对于 Android 原生来说,就是在不同分辨率目录下放置不同分辨率的图片,只不过 flutter 并不是创建drawable-xxdpi文件,而是创建以下文件夹:

.../logo.png
.../Mx/logo.png
.../Nx/logo.png

其中M和N是数字标识符,对应于其中包含的图像分辨率,它们指定不同素设备像比例的图片,主资源默认对应于1.0倍的分辨率图片。看下面例子:
在这里插入图片描述
在设备像素比率为1.8的设备上,images/2.0x/logo.png 将被选择。对于2.7的设备像素比率,images/3.0x/logo.png将被选择。如果未在Image控件上指定渲染图像的宽度和高度,以便它将占用与主资源相同的屏幕空间量(并不是相同的物理像素),只是分辨率更高。 也就是说,如果images/logo.png是72px乘72px,那么images/3.0x/logo.png应该是216px乘216px; 但如果未指定宽度和高度,它们都将渲染为72像素×72像素(以逻辑像素为单位)。pubspec.yaml中asset部分中的每一项都应与实际文件相对应,但主资源项除外。当主资源缺少某个资源时,会按分辨率从低到的顺序去选择,也就是说1.0x中没有的话会在2.0x中找,2.0x中还没有的话就在3.0x中找。

      return Image(
        // 系统会根据分辨率自动选择不同大小的图片
        image: AssetImage('images/logo.png'),
        // ...
      ),

8. Button

Flutter 里有多种 Button 按钮组件:

  • ElevatedButton : "漂浮"按钮
  • TextButton :文本按钮
  • OutlinedButton :线框按钮
  • IconButton :图标按钮
  • ButtonBar :按钮组
  • FloatingActionButton :浮动按钮

8.1 ElevatedButton

ElevatedButton 即"漂浮"按钮,它默认带有阴影和灰色背景。按下后,阴影会变大。

  • 代码
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',

      home: Scaffold(
        appBar: AppBar(
          title: Text('按钮(Button)'),
        ),
          body: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              const Text("1.ElevatedButton",
                textScaleFactor: 1.2,
              ),

              ElevatedButton(
                child: Text("漂浮按钮"),
                onPressed: () {
                  print("Clicked me");
                },
              )
            ],
          )
      )

    );
  }
}
  • 效果图
    在这里插入图片描述

8.2 TextButton

TextButton 即文本按钮,默认背景透明并不带阴影。按下后,会有背景色。

  • 代码
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',

      home: Scaffold(
        appBar: AppBar(
          title: Text('按钮(Button)'),
        ),
          body: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              const Text("2.TextButton",
                textScaleFactor: 1.2,
              ),

              TextButton(
                child: Text("文本按钮"),
                onPressed: () {
                  print("Clicked me");
                },
              ),
            ],
          )
      )

    );
  }
}
  • 效果图
    在这里插入图片描述

8.3 OutlinedButton

OutlinedButton 默认有一个边框,不带阴影且背景透明。按下后,边框颜色会变亮、同时出现背景和阴影(较弱)

  • 代码
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',

      home: Scaffold(
        appBar: AppBar(
          title: Text('按钮(Button)'),
        ),
          body: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              const Text("3.OutlinedButton",
                textScaleFactor: 1.2,
              ),

              OutlinedButton(
                child: Text("线框按钮"),
                onPressed: () {
                  print("Clicked me");
                },
              ),
            ],
          )
      )

    );
  }
}
  • 效果图
    在这里插入图片描述

8.4 IconButton

IconButton 是一个可点击的 Icon,不包括文字,默认没有背景,点击后会出现背景

  • 代码
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',

      home: Scaffold(
        appBar: AppBar(
          title: Text('按钮(Button)'),
        ),
          body: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              const Text("4.IconButton",
                textScaleFactor: 1.2,
              ),

              IconButton(
                icon:Icon(Icons.add_a_photo),
                onPressed: () {
                  print("Clicked me");
                },
              ),
            ],
          )
      )

    );
  }
}
  • 效果图
    在这里插入图片描述

8.5 ButtonBar

ButtonBar,它里面可以放多个 Button,ButtonBar 可以给里面的 button 做统一样式处理。

  • 代码
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',

      home: Scaffold(
        appBar: AppBar(
          title: Text('按钮(Button)'),
        ),
          body: Container(
            color: Colors.green,
            width: 450,
            child: ButtonBar(
              buttonPadding: EdgeInsets.all(5),
              buttonHeight: 30,
              alignment: MainAxisAlignment.spaceBetween,
              buttonTextTheme: ButtonTextTheme.primary,
              layoutBehavior: ButtonBarLayoutBehavior.padded,

            children:[
              ElevatedButton.icon(
                icon: Icon(Icons.send),
                label: Text("发送"),
                onPressed: () {
                  print("Clicked me");
                },
              ),

              ElevatedButton.icon(
                icon: Icon(Icons.home),
                label: Text("首页"),
                onPressed: () {
                  print("Clicked me");
                },
              ),

              ElevatedButton.icon(
                icon: Icon(Icons.shop),
                label: Text("购物"),
                onPressed: () {
                  print("Clicked me");
                },
              ),
            ],
          ),
          )
      )

    );
  }
}
  • 效果图
    在这里插入图片描述

8.6 FloatingActionButton

一个 material design的浮动按钮。 浮动操作按钮是一个圆形图标按钮,它悬停在内容上以提升应用程序中的主要操作。 浮动操作按钮最常用于[Scaffold.floatingActionButton] 场景。

  • 代码
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',

      home: Scaffold(
        appBar: AppBar(
          title: Text('按钮(Button)'),
        ),
          body: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              const Text("6.FloatingActionButton",
                textScaleFactor: 1.2,
              ),

              FloatingActionButton(
                child: Icon(Icons.access_alarm_rounded),
                onPressed: () {
                  print("Clicked me");
                },
              ),
            ],
          )
      )

    );
  }
}
  • 效果图
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Flutter -- 基础组件】Flutter 页面 的相关文章

随机推荐

  • 被车撞了!

    买了新车之后 因为是新手司机上路 开了不到4个月 车身已经被划伤好多处了 有的是我自己不小心划的 有的是车在停车场 不知道被谁划伤的 找不到肇事者了 不过好在都是小小的划伤 不影响车的颜值 也不影响驾驶体验 一开始我还很心疼 后来也释然了
  • 【Linux】进程间通信1-匿名管道1

    文章目录 管道符 创建匿名管道的pipe函数 从内核角度深入理解管道 代码验证pipe函数 管道和子进程的先后创建顺序 代码实现父子进程的通信 管道的特性 前言 为什么需要进程间通信呢 每一个进程的数据都是存储在物理内存当中的 进程通过各自
  • 【JMeter】beanshell 获取/修改请求头信息

    在使用jmeter做接口测试的时候 相信大家一定遇到过以下场景 使用HTTP信息头管理器设置全局请求头信息 如 content type application json 但并非所有的接口的content type都是application
  • osal_start_timerEx 函数分析

    经常用到osal start timerEx函数来周期性产生某一事件 本文就来分析一下该函数 fn osal start timerEx brief This function is called to start a timer to e
  • 同一台电脑安装多个版本的idea

    同一台电脑安装多个版本的idea 需求 当前 电脑上已经安装了idea2019 3 exe版本 发现此版本太旧了 无法体验新版idea2023 1的很多功能及优化 新出的好多idea插件都不支持idea2019 3版本了 比如 支持Chat
  • C/C++浮点数的存储方式 IEEE-754标准,以及实现一个ftoa函数将浮点数转换为字符串

    浮点数的存储格式 转载自 http www cnblogs com dolphin0520 archive 2011 10 02 2198280 html C C 浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的 例如一个
  • 遍历Map的四种方法

    遍历map的4种方式的比较 public static void main String args Map
  • 机器学习(第一章)—— 特征工程

    目录 一 特征归一化 二 类别型特征 三 高维组合特征的处理 四 组合特征 五 文本表示模型 六 Word2Vec 七 图像数据不足时的处理方法 为什么需要对数值类型的特征做归一化 怎样处理类别型特征 什么是组合特征 如何处理高维组合特征
  • SpringRetry重试机制(3秒上手)

    目录 前言 一 SpringRetry的使用 1 1 引入依赖 1 2 开启重新机制 1 3 3 在方法上添加 Retryable 1 3 4 编写重试失败后的执行的方法 测试 前言 SpringRetry重试机制在实际工作中的场景 比如
  • PTA输出指定范围内的完数

    1 include
  • 【渲染管线-1】坐标变换的理解

    渲染管线 1 坐标变换的理解 1 对坐标变换的形象理解 2 整个过程在计算机内的逻辑 本文将尽可能细致的对坐标变换的过程 用意和一些细节进行剖析 目的是方便自己在遗忘时进行复习 因此可能会有些繁琐 文章将分成两部分 第一部分包含大量例子 主
  • C++ OpenCV findChessboardCorners()耗时很长

    目录 问题概览 函数定义 问题排查 解决方案 1 人为添加空白或者将背景变为与图案背景一致 2 使用OpenCV4中的findChessboardCornersSB 函数 参考引用 问题概览 近期新买的棋盘格标定板到了 开始尝试用之前写的标
  • vs2008 MFC 常见错误--新员工常犯的错误!

    1 picture 控件添加成员变量时 出现无效的过程调用或参数 解决办法 找到头文件 对话框数据 enum IDD IDD LDXXXX DIALOG 后面添加下面这行 enum cust enum 2 vc 6 0 升级到vs2005
  • MATLAB三维散点图的绘制(scatter3、plot3)

    1 函数scatter3 用法 scatter3 x y z c c 为颜色 需和x y z长度相同 例子 x 4229042 63 4230585 02 4231384 96 4231773 63 4233028 58 4233296 7
  • 一次nginx代理前端报rewrite or internal redirection cycle while internally redirecting to “/index.html“ 记录

    将nginx从一个服务器迁移到另一个服务器后执行nginx t检查配置没有问题 重启服务后访问报500内部错误 查看日志报rewrite or internal redirection cycle while internally redi
  • 【数据结构】八大排序算法详解

    作者 情话0 0 专栏 数据结构 个人简介 一名双非编程菜鸟 在这里分享自己的编程学习笔记 欢迎大家的指正与点赞 谢谢 排序 前言 一 概述 1 排序的稳定性 2 排序的分类 3 排序算法的性能评价 二 排序算法的实现 1 插入类排序 1
  • 其他文章太水,从头到尾写一篇rabbitmq,含Springboot整合rabbitmq

    文章目录 安装跳过 不会的请百度 这篇文章主要记录理论以及编码 什么是rabbitmq 基本概念 不与SpringBoot整合的写法 先写一个工具类 获取连接等 简单队列模式 模型 生产者生产消息 消费者接受消息 简单消息队列不足 Work
  • leetcode算法面试题:插入区间问题、乘积最大子数组问题

    题目 给你一个 无重叠的 按照区间起始端点排序的区间列表 在列表中插入一个新的区间 你需要确保列表中的区间仍然有序且不重叠 如果有必要的话 可以合并区间 示例 1 输入 intervals 1 3 6 9 newInterval 2 5 输
  • Qt Creato配置PCL库

    Qt Creator中使用PCL库 业务不精er的博客 CSDN博客 Qt6 1 0中配置pcl1 11 1 qt6导入pcl库 朽一的博客 CSDN博客 VS2017 中配置QT PCL显示点云或3D图形 pcl显示3d图tiff 桂林巡
  • 【Flutter -- 基础组件】Flutter 页面

    文章目录 1 MaterialApp 1 1 代码 1 2 效果图 2 Scaffold 2 1 代码 2 2 效果图 3 AppBar 3 1 代码 3 2 效果图 4 Text 4 1 代码 4 2 效果图 5 RichText 5 1