首页 > 其他分享 >Flutter20个小实例免费视频教程

Flutter20个小实例免费视频教程

时间:2024-12-14 15:43:42浏览次数:3  
标签:return 0.0 Flutter20 dart 实例 animation1 child import 视频教程

Flutter20个小实例免费视频教程

https://www.bilibili.com/video/BV1kt411B7mu

P1 01节底部导航栏和切換效果的制作-1

Scaffold脚手架

动态flutter 快捷键 stful

P2 02节底部导航栏和切换效果的制作-2

import 'package:flutter/material.dart';
import 'pages/airplay_screen.dart';
import 'pages/email_screen.dart';
import 'pages/pages_screen.dart';
import 'pages/home_screen.dart';

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

  @override
  State<BottomNavigationWidget> createState() => _BottomNavigationWidgetState();
}

class _BottomNavigationWidgetState extends State<BottomNavigationWidget> {
  final _BottomNavigationColor = Colors.blue;
  int _currentIndex = 0;
  // List<Widget> list=List();//old
  List<Widget> list = <Widget>[];

  @override
  void initState() {
    list
      ..add(HomeScreen())
      ..add(EmailScreen())
      ..add(PagesScreen())
      ..add(AirplayScreen());
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: list[_currentIndex],
      bottomNavigationBar: BottomNavigationBar(
        fixedColor: Colors.red, //current item
        type: BottomNavigationBarType.fixed, //item > 3时必须要设置,不然未选中项字体颜色变白
        onTap: (index) {
          setState(() {
            _currentIndex = index;
          });
        },
        currentIndex: _currentIndex,
        items: [
          BottomNavigationBarItem(
              icon: Icon(
                Icons.home,
                color: _BottomNavigationColor,
              ),
              // title: Text('Home')),//old
              label: 'Home'),
          BottomNavigationBarItem(
              icon: Icon(
                Icons.email,
                color: _BottomNavigationColor,
              ),
              // title: Text('Home')),//old
              label: 'Email'),
          BottomNavigationBarItem(
              icon: Icon(
                Icons.pages,
                color: _BottomNavigationColor,
              ),
              // title: Text('Home')),//old
              label: 'Pages'),
          BottomNavigationBarItem(
              icon: Icon(
                Icons.airplay,
                color: _BottomNavigationColor,
              ),
              // title: Text('Home')),//old
              label: 'Airplay'),
        ],
      ),
    );
  }
}

P3 03节不规则底部工具栏的制作-1


P4 04节不规则底部工具栏的制作-2
P5 05节路由跳转的动画效果1


P6 06节路由跳转的动画效果2

import 'package:flutter/material.dart';

class CustomeRouter extends PageRouteBuilder {
  final Widget widget;
  CustomeRouter(this.widget)
      : super(
            transitionDuration: Duration(seconds: 1),
            pageBuilder: (
              BuildContext context,
              Animation<double> animation1,
              Animation<double> animation2,
            ) {
              return widget;
            },
            transitionsBuilder: (BuildContext Context,
                Animation<double> animation1,
                Animation<double> animation2,
                Widget child) {
              //渐隐渐显的路由动画效果
              // return FadeTransition(
              //   opacity: Tween(begin: 0.0, end: 1.0).animate(CurvedAnimation(
              //       parent: animation1, curve: Curves.fastOutSlowIn)),
              //   child: child,
              // );

              //缩放的动画效果
              // return ScaleTransition(
              //   scale: Tween(begin: 0.0, end: 1.0).animate(CurvedAnimation(
              //       parent: animation1, curve: Curves.fastOutSlowIn)),
              //   child: child,
              // );

              //旋转+缩放动画效果
              // return RotationTransition(
              //   turns: Tween(begin: 0.0, end: 1.0).animate(CurvedAnimation(
              //       parent: animation1, curve: Curves.fastOutSlowIn)),
              //   child: ScaleTransition(
              //     scale: Tween(begin: 0.0, end: 1.0).animate(CurvedAnimation(
              //         parent: animation1, curve: Curves.fastOutSlowIn)),
              //     child: child,
              //   ),
              // );

              //左右滑动动画
              return SlideTransition(
                position: Tween<Offset>(
                        begin: Offset(-1.0, 0.0), end: Offset(0.0, 0.0))
                    .animate(CurvedAnimation(
                        parent: animation1, curve: Curves.fastOutSlowIn)),
                child: child,
              );
            });
}

P7 07节磨砂玻璃的效果制作

Fliter Widget 消耗性能

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

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: [
          ConstrainedBox(
            constraints: BoxConstraints.expand(),
            child: Image.network(
                'https://img0.baidu.com/it/u=3827844244,2735061184&fm=253&app=120&size=w931&n=0&f=JPEG&fmt=auto?sec=1722531600&t=b10aa9435310a27ec847a535b6894521'),
          ),
          Center(
            child: ClipRect(
              //可裁切的矩形
              child: BackdropFilter(
                //背景过滤器
                filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0),
                child: Opacity(
                  opacity: 0.5,
                  child: Container(
                    width: 500.0,
                    height: 700.0,
                    decoration: BoxDecoration(color: Colors.grey.shade200),
                    child: Center(
                      child: Text(
                        'KooTeam',
                        style: Theme.of(context).textTheme.displayLarge,
                      ),
                    ),
                  ),
                ),
              ),
            ),
          )
        ],
      ),
    );
  }
}


P8 08节保持页面状态-1
P9 09节保持页面状态-2

keep alive


P10 10节不简单的搜索条-1


P11 11节不简单的搜索条-2
P12 12节Wrap流式布局

P13 13节展开闭合案例ExpansionTile控件

ExpansionTile 折叠tab

P14 14节展开闭合列表案例ExpansionPanelList控件
P15 15节路径裁切和二次贝塞尔曲线的讲解
P16 16节路径裁切浪型贝塞尔曲线绘制
P17 17节APP闪屏动画制作
P18 18节右滑返回上一页效果制作
P19 19节轻量级提示操作ToolTip
P20 20节Draggable拖拽控件讲解和实例演示

命令行 r 热更新

大写R 去缓存更新

标签:return,0.0,Flutter20,dart,实例,animation1,child,import,视频教程
From: https://www.cnblogs.com/KooTeam/p/18606825

相关文章

  • Flutter基础视频教程
    Flutter基础视频教程https://www.bilibili.com/video/BV15t411U7yfP100视频学习方法说明看视频不看MP4写不会看文字Flutter.富啦特P201认识Flutter是什么Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。Flutter可以与现有的代码一起工作......
  • uniCloud云开发视频教程-从基础入门到项目开发实战-uniapp进阶课文章管理系统(云函数/
    uniCloud云开发视频教程-从基础入门到项目开发实战-uniapp进阶课文章管理系统(云函数/云数据库/云存储)https://www.bilibili.com/video/BV1PP411E7qG513894357@qq.comP11.1.uniCloud课程介绍unicloud可老P21.2.新建uniapp项目及创建uniCloud服务空...2022-10-12腾讯云收......
  • Nuxt.js免费视频教程 开启SSR渲染
    Nuxt.js免费视频教程开启SSR渲染https://www.bilibili.com/video/BV1Xt41117Kg*100节NuxtJS视频教程介绍VM443:101节NuxtJS开发环境安装和HelloWorldVM443:102节NuxtJS目录结构和配置文件VM443:103节NuxtJS常用配置讲解VM443:104节NuxtJS路由讲解和参数传递VM443:1......
  • Linux ed命令教程:轻松学会使用ed行编辑器(附语法参数安装及实例)
    Linuxed命令linux ed 命令是一个行编辑器。它被认为是标准的Unix文本编辑器,因为它是首个出现在Unix的文本编辑器,并且它曾经无处不在,你在任何一个POSIX系统中都能找到它(通常来说,你现在也可以)。在某种程度上,你可以很容易看出来它是第一个文本编辑器,因为它在许多方面的......
  • Linux csplit命令图文教程:将一个大文件拆分为多个较小的文件/部分(附详细参数讲解及附
    Linuxcsplit命令csplit是一个Linux命令,可用于根据用户的要求将一个大文件拆分为多个较小的文件/部分。这些部分由上下文线确定。默认情况下,csplit将文件拆分为每个文件1000行,并为用户提供根据需要更改拆分行数的选项。输出分割文件的名称如“xx00”和“xx01”。csplit......
  • C/C++实例汇集(1)
    1、用代码判断一个系统是16位系统还是32位系统?以下是几种常见编程语言中判断系统是16位还是32位的代码示例C语言:#include<stdio.h>intmain(){//方法一:利用sizeofif(sizeof(int)==2){printf("16位系统\n");}elseif(sizeof(int)==4){......
  • vue——路由守卫beforeEach, 说明及实例问题
    一.说明导航守卫官方文档:在路由守卫中,只有next()是放行,其他的诸如:next('/login')、next(to)或者next({...to,replace:true})都不是放行,而是:中断当前导航,执行新的导航例1:beforeEach((to,from,next)=>{next('/login')}实际执行流程:beforeEach((to,fro......
  • guassdb华为OpenGauss高斯数据库间隔分区表自动创建分区sql实例
    命令行操作流程#切换用户su-omm#连接数据库gsql-dpostgres-p6432-r#选择数据库\cenv_demo#设置查询模式SETSEARCH_PATHTOpublic;sql模板1、预创建时间范围sql分区(非数据库自动创建分区)CREATETABLEt_metadata(idVARCHAR(36)NOTNULLPRIMA......
  • 第一个VUE实例
    首先,我们需要在项目中引入Vue.js的库文件。<!--引入Vue.js--><scriptsrc="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>然后,在HTML文件中创建一个容器元素,用于渲染Vue实例。<divid="app">{{message}}</div>接下来,在JavaScript中创建Vu......
  • 一、HTML基础实例
    1.HTML文档(1)所有HTML文档都必须以文档类型声明开头:。(2)HTML文档以开始,以结束。(3)HTML文档的可见部分位于和之间。实例:<!DOCTYPEhtml><html><body><h1>我的第一个标题</h1><p>我的第一个段落。</p></body></html>2.<!DOCTYPE>声明(1)&l......