Flutter 开发学习笔记(3):第三方UI库的引入

news2024/12/23 1:16:48

文章目录

  • 前言
  • 初始化程序
  • Icon导入
    • 如何导入
  • Toast消息提示框引入
    • 简单封装
    • 简单使用
  • Charts图表导入
    • 新建pages文件夹存放page
    • 简单代码
    • 实现效果
  • 总结

前言

Flutter已经发布了有10年了,生态也算比较完善了。用于安卓程序开发应该是非常的方便。我们这里就接入一些简单的Flutter的UI即可

初始化程序

我们就用最简单的初始项目即可,保证你的项目能够运行

在这里插入图片描述

Icon导入

Flutter是由谷歌开发的跨平台程序,而谷歌本身就有一套自己的UI库,直接使用即可,基本够用了,本体应该有3000多个IOCN。

Material Icon 官方网站

在这里插入图片描述

如何导入

比如我们要导入【search】这个ICON,我们就要Icon进行添加。

Icon(Icons.search)

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

Toast消息提示框引入

在pubspec.yml中添加

dependencies:
  fluttertoast: ^8.2.4

简单封装

在这里插入图片描述

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

class ToastUtils {
  static void shotToast(
    String message, [
    //方括号里是可选参数,可以不填,等号右边是默认值
    Toast time = Toast.LENGTH_SHORT,
    ToastGravity gravity = ToastGravity.CENTER,
    Color backColor = Colors.black45,
    Color textColor = Colors.white,
  ]) {
    Fluttertoast.showToast(
        msg: message,
        //消息内容
        toastLength: time,
        //停留时间
        gravity: gravity,
        //出现的位置
        timeInSecForIosWeb: 1,
        backgroundColor: backColor,
        //背景色
        textColor: textColor,
        //前景色
        fontSize: 16.0); //文本字号
  }
}

简单使用

import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'utils/ToastUtils.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});


  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    const String appTitle = 'Flutter layout demo';

    return MaterialApp(
      title: appTitle,
      home: Scaffold(
        appBar: AppBar(
          title: const Text(appTitle),
        ),
        body: Center(
          child: ElevatedButton(
              onPressed: () {
                debugPrint('hello flutter');
                ToastUtils.shotToast('hello flutter');
              },
              child: const Text('hello flutter')),
        ),
      ),
    );
  }
}

在这里插入图片描述

Charts图表导入

这个直接用官方的即可

【Flutter】图表显示charts_flutter折线图/柱状图/饼状图等

新建pages文件夹存放page

在这里插入图片描述

简单代码

import 'dart:math';

import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;

class ChartTestPage extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("chart_flutter")),
      body: Column(children: [Container(height: 240, child: _simpleLine())]),
    );
  }

  Widget _simpleLine() {
    var random = Random();

    var data = [
      LinearSales(0, random.nextInt(100)),
      LinearSales(1, random.nextInt(100)),
      LinearSales(2, random.nextInt(100)),
      LinearSales(3, random.nextInt(100)),
    ];

    var seriesList = [
      charts.Series<LinearSales, int>(
        id: 'Sales',
        colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
        domainFn: (LinearSales sales, _) => sales.year,
        measureFn: (LinearSales sales, _) => sales.sales,
        data: data,
      )
    ];

    return charts.LineChart(seriesList, animate: true);
  }
}

class LinearSales {
  final int year;
  final int sales;

  LinearSales(this.year, this.sales);
}

实现效果

import 'package:flutter/material.dart';
import 'package:flutter_widget_test/pages/ChartTestPage.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'utils/ToastUtils.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    const String appTitle = 'Flutter layout demo';

    return MaterialApp(
      title: appTitle,
      home: Scaffold(
        appBar: AppBar(
          title: const Text(appTitle),
        ),
        body: Center(
          child: ElevatedButton(
              onPressed: () {
                debugPrint('hello flutter');
                ToastUtils.shotToast('hello flutter');
              },
              child: ChartTestPage()),
        ),
      ),
    );
  }
}

在这里插入图片描述

总结

Flutter 的生态还是可以的,就是教程相对来说比较的晦涩难懂。主要是Dark语法挺C# 的,而且在return里面写一大堆代码,这个我不喜欢。我的代码习惯是先将返回值求出来在放到retrun里面。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

经营数据分析怎么做?企业月度经营分析的思路与方法分享

企业经营分析是企业成功的关键之一&#xff0c;无论企业规模大小&#xff0c;都需要通过系统性的数据分析来指导经营决策。这一过程不仅仅是对集团大局数据的简单处理&#xff0c;还包括对市场、客户、生产、财务、运营、项目进展、人效等多个方面数据的全面审视。通过深入分析…

ubuntu-server部署hive-part4-部署hive

参照 https://blog.csdn.net/qq_41946216/article/details/134345137 操作系统版本&#xff1a;ubuntu-server-22.04.3 虚拟机&#xff1a;virtualbox7.0 部署hive 下载上传 下载地址 http://archive.apache.org/dist/hive/ apache-hive-3.1.3-bin.tar.gz 以root用户上传至…

Redis缓存设计与性能优化【缓存和数据库不一致问题,解决方案:1.加过期时间这样可以一段时间后自动刷新 2.分布式的读写锁】

Redis缓存设计与性能优化 缓存与数据库双写不一致 缓存与数据库双写不一致 在大并发下&#xff0c;同时操作数据库与缓存会存在数据不一致性问题 1、双写不一致情况 2、读写并发不一致 解决方案&#xff1a; 1、对于并发几率很小的数据(如个人维度的订单数据、用户数据等)&a…

六自由度Stewart控制系统matlab仿真,带GUI界面

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 六自由度Stewart平台控制系统是一种高精度、高稳定性的运动模拟装置&#xff0c;广泛应用于飞行模拟、汽车驾驶模拟、虚拟现实、精密定位等领域。其工作原理基于Stewart机构&a…

Python网络爬虫(一):HTML/CSS/JavaScript介绍

1 HTML语言 1.1 HTML简介 HTML指的是超文本标记语言&#xff1a;HyperText Markup Language&#xff0c;它不是一门编程语言&#xff0c;而是一种标记语言&#xff0c;即一套标记标签。HTML是纯文本类型的语言&#xff0c;使用HTML编写的网页文件也是标准的文本文件&#xff0c…

市场复盘总结 20240402

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率 50% 最常用的二…

【教程】Flutter 应用混淆

在移动应用开发中&#xff0c;保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具&#xff0c;帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆&#xff0c;并提供了相关的操作步骤和注意事项。 &#x1f4dd; 摘要 本…

Android Telephony框架

目录 一、简介二、应用层(Application)三、框架层(Framework)四、本地 RIL 层(RIL)五、驱动层(Modem)六、整体框架 一、简介 无论手机发展到如何智能的程度&#xff0c;最关键和重要的功能仍然是通讯&#xff0c;具体来说就是打电话、发短信、上网功能的使用。而整个 Android …

uniapp-设置UrlSchemes从外部浏览器H5打开app

需求&#xff1a;外部浏览器H5页面&#xff0c;跳转到uniapp开发的原生app内部。 1、uniapp内部的配置&#xff1a; &#xff08;1&#xff09;打开manifest->App常用其他设置&#xff0c;如下&#xff0c;按照提示输入您要设置的urlSchemes&#xff1a; &#xff08;2&am…

项目中 使用 spring cache redis 出现大量keys* 慢查询排查以及修复

前言 业务反馈 redis里有大量的慢查询 而且全是keys 的命令 排查 首先登录 阿里云查看redis的慢查询日志 如下 主要使用到redis cache的注解功能 分别是 CacheEvict 和 Cacheable 注意 CacheEvict 这个比较特殊 会进行驱逐缓存 说白就会删除缓存或者让缓存失效 第一时间想…

零基础入门多媒体音频(7)-AAOS audio

概览 Android Automotive OS (AAOS) 是基于核心的 Android 音频堆栈打造&#xff0c;以支持用作车辆信息娱乐系统。AAOS 负责实现信息娱乐声音&#xff08;即媒体、导航和通讯&#xff09;&#xff0c;但不直接负责具有严格可用性和时间要求的铃声和警告。 虽然 AAOS 提供了信号…

AJAX——介绍

同步与异步 原生的AJAX 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wi…

UE4_碰撞_碰撞蓝图节点——Get/Set Collision Object Type

一、get collision object type set collision object type 二、 使用方法&#xff1a; 通过对射线检测命中物体的碰撞中的对象类型object type进行判定来重新设置碰撞的对象类型&#xff0c;来更改碰撞响应的物体响应的方式。比方说一开始不让你进门&#xff0c;你可以通…

Ansys Zemax | 如何将光栅数据从Lumerical导入至OpticStudio(上)

附件下载 联系工作人员获取附件 本文介绍了一种使用Ansys Zemax OpticStudio和Lumerical RCWA在整个光学系统中精确仿真1D/2D光栅的静态工作流程。将首先简要介绍方法。然后解释有关如何建立系统的详细信息。 本篇内容将分为上下两部分&#xff0c;上部将首先简要介绍方法工…

OpenHarmony实战:Combo解决方案之ASR芯片移植案例

本方案基于 OpenHarmony LiteOS-M 内核&#xff0c;使用 ASR582X 芯片的 DEV.WIFI.A 开发板进行开发移植。作为典型的 IOT Combo&#xff08;Wi-FiBLE&#xff09;解决方案&#xff0c;本文章介绍 ASR582X 的适配过程。 编译移植 目录规划 本方案的目录结构使用 Board 和 So…

Shadow

Shadow Mapping 最关键的思想是阴影出现的点是我们可以看到而光源看不到的点。 主要思路&#xff1a; 从光源渲染一个深度图表示能看到的地方从我们的眼中看到的点投射到光源相机中看光源相机能不能看到(是不是对应的深度) 这个方法中有一些问题&#xff1a; Hard shadows (poi…

UE4 方块排序动画

【动画效果】 入动画&#xff1a; 出动画&#xff1a; 【分析】 入动画&#xff1a;方块动画排序方式为Z字形&#xff0c;堆砌方向为X和Y轴向 出动画&#xff1a;方块动画排序方式为随机 【关键蓝图】 1.构建方块砌体 2.入/出动画

xss【2】

1.xss钓鱼 钓鱼攻击利用页面&#xff0c;fish.php黑客钓鱼获取到账号密码存储的位置 xss进行键盘记录 2.xss常规防范 3.xss验证payload XSS&#xff08;跨站攻击&#xff09;_details/open/ontoggle-CSDN博客

达梦DMHS-Manager工具安装部署

目录 1、前言 1.1、平台架构 1.2、平台原理 2、环境准备 2.1、硬件环境 2.2、软件环境 2.3、安装DMHS 2.3.1、源端DMHS前期准备 2.3.2、源端DMHS安装 2.3.3、目的端DMHS安装 3、DMHS-Manager客户端部署 3.1、启动dmhs web服务 3.2、登录web管理平台 4、添加DMHS实…

元宇宙虚拟空间的场景构造(二)

前言 该文章主要讲元宇宙虚拟空间的场景构造&#xff0c;基本核心技术点&#xff0c;不多说&#xff0c;直接引入正题。 场景的构造 使用引入的天空模块 this.sky new Sky(this); 在Sky模块里&#xff0c;有设置对其中的阳光进行不同时间段的光线处理。而天空又是怎么样的…