Flutter开发(十九)—— 按钮

【Flutter】二十九、Flutter通知—— Notification 一、使用NotificationListener监听滚动进度二、使用自定义通知 Notification可以实现将数据从子组件向父组件传递,与InheritedWidget的传递方向正好相反。 一、使用NotificationListener监听滚动进度     Flutter中很多地方使用了通知,如可滚动(Scrollable) Widget中滑动时就会分发ScrollNotificati... 阅读详情

按钮组件:
1、FloatingActionButton

main.dart 设定默认路由,Theme主题配置:

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.purple,
      ),
      initialRoute: '/',
      // routes:
      routes: {
        '/': (context) => MaterialComponents(),
      },
    );
  }
}

MaterialComponents.dart 使用ListView组件,展示即将要演示的按钮组件的页面列表:

import 'package:flutter/material.dart';
import 'demo/FloatingButtonDemo.dart';
import 'demo/buttonDemo.dart';
import 'demo/popupMenuButtonDemo.dart';
import 'demo/PopupTitleBar.dart';

class MaterialComponents extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('data'),
        elevation: 0.0, 
      ),
      body: ListView(
        //ListView 增加padding
        padding: EdgeInsets.all(30.0),
        children: <Widget>[
          // FloatingButton 悬浮按钮
          ListItem(title: 'FloatingButton', page: FloatingButtonDemo()),
          // PopupMenuButton 弹出列表
          ListItem(title: 'PopupMenuButton', page: PopupMenuButtonDemo()),
          // TitleBar 弹出列表
          ListItem(title: 'PopupTitleBar', page: PopupTitleBarDemo()),
          buttonDemo().getFlatButtonText(),//引入 只带文字 FlatButton
          buttonDemo().getFlatButtonIcon(),//引入 只带Icon FlatButton
          buttonDemo().getRaisedButtonText(),
          buttonDemo().getRaisedButtonIcon(),
          buttonDemo().getOutlineButtonText(),
          buttonDemo().getOutlineButtonIcon(),
          buttonDemo().getRowButton(),
          buttonDemo().getButtonBar(context),
          
        ],
      ),
    );
  }
}

class ListItem extends StatelessWidget {
  final String title;
  final Widget page;
  ListItem({this.title, this.page});

  @override
  Widget build(BuildContext context) {
    return ListTile(
      title: Text(title),
      onTap: () {
        Navigator.of(context)
            .push(MaterialPageRoute(builder: (context) => page));
      },
    );
  }
}

一、FloatingButtonDemo.dart 漂浮动作按钮,演示代码:

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

class FloatingButtonDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: getScaffoldkey(), // 获取Scaffoldkey
      appBar: AppBar(
        title: Text('FloatingButton'),
        elevation: 0.0,
      ),
      floatingActionButton: _floatingActionButton(context),
      // floatingActionButtonLocation调整位置,centerDocked居中且重叠
      floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
      // 添加 BottomAppBar
      bottomNavigationBar: BottomAppBar(
        color: Colors.purple,
        child: Container(
          height: 60.0, //设置BottomAppBar的高度
        ),
        //Circular Notched Rectangle 圆形缺口组件
        shape: CircularNotchedRectangle(),
      ),
    );
  }

  //构建 FloatingActionButton
  Widget _floatingActionButton(BuildContext context) {
    return FloatingActionButton(
      onPressed: () {
        showSnackbar('点击了FloatingActionButton'); //展示 Snackbar
      }, //点击后处理的事件
      child: Icon(Icons.add),
      elevation: 0.0,
      backgroundColor: Colors.blueAccent, //设置背景颜色
      //设置按钮形状,默认是圆形。BeveledRectangleBorder 斜角矩形
      shape: BeveledRectangleBorder(
        borderRadius: BorderRadius.circular(15.0), //设置0.0是正方形
      ),
    );
  }
}

演示效果:

在这里插入图片描述

二、popupMenuButtonDemo.dart

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

class PopupMenuButtonDemo extends StatefulWidget {
  @override
  _PopupMenuButtonDemoState createState() => _PopupMenuButtonDemoState();
}

class _PopupMenuButtonDemoState extends State<PopupMenuButtonDemo> {
  String _currentMenuitem = '东';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: getScaffoldkey(),
      appBar: AppBar(
        title: Text('PopupMenuButton'),
        elevation: 10.0,
      ),
      body: Container(
        padding: EdgeInsets.all(15.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              _currentMenuitem,
              style: TextStyle(color: Colors.red, fontSize: 30.0),
            ),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                PopupMenuButton(
                    onSelected: (String value) {
                      showSnackbar('$value');
                      setState(() {
                        _currentMenuitem = value;
                      });
                    },
                    itemBuilder: (BuildContext context) =>
                        <PopupMenuItem<String>>[
                          PopupMenuItem(
                            value: '选中—东',
                            child: Text('东'),
                          ),
                          PopupMenuItem(
                            value: '选中—南',
                            child: Text('南'),
                          ),
                          PopupMenuItem(
                            value: '选中—西',
                            child: Text('西'),
                          ),
                          PopupMenuItem(
                            value: '选中—北',
                            child: Text('北'),
                          ),
                        ])
              ],
            )
          ],
        ),
      ),
    );
  }
}

演示效果:
在这里插入图片描述

三、PopupTitleBar.dart

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

class PopupTitleBarDemo extends StatefulWidget {
  @override
  _PopupTitleBarDemoState createState() => new _PopupTitleBarDemoState();
}

class _PopupTitleBarDemoState extends State<PopupTitleBarDemo> {
  String _bodyStr = "显示菜单内容";
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      key: getScaffoldkey(),
      appBar: new AppBar(
        title: new Text("PopupTitleBar"),
        actions: <Widget>[
          new PopupMenuButton(
              onSelected: (String value) {
                setState(() {
                  _bodyStr = value;
                  showSnackbar(value);
                });
              },
              itemBuilder: (BuildContext context) => <PopupMenuItem<String>>[
                    new PopupMenuItem(value: "选项一的内容", child: new Text("选项一")),
                    new PopupMenuItem(value: "选项二的内容", child: new Text("选项二"))
                  ])
        ],
      ),
      body: new Center(
        child: new Text(_bodyStr),
      ),
    );
  }
}

演示效果:
在这里插入图片描述

四、buttonDemo.dart 中介绍了以下Button组件。
FlatButton(带或不带Icon)、RaisedButton(带或不带Icon)、OutlineButton(带或不带Icon),Row与Button组合、ButtonBar

import 'package:flutter/material.dart';

class buttonDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container();
  }

//--------------FlatButton----------------------
  // FlatButton 组件
  Widget _flatButtonText = FlatButton(
    child: Text('FlatButton'), //按钮文字
    textColor: Colors.purple, //按钮文字颜色
    onPressed: () {}, //按钮点击事件
    splashColor: Colors.grey, //点击时溅墨效果颜色
  );

  Widget getFlatButtonText() {
    return _flatButtonText;
  }

  // FlatButton 组件带Icon
  Widget _flatButtonIcon = FlatButton.icon(
    icon: Icon(Icons.add_a_photo), //按钮图标
    label: Text('FlatButtonIcon'), //按钮文字
    onPressed: () {},
    splashColor: Colors.blueAccent,
    textColor: Colors.blueAccent,
  );

  Widget getFlatButtonIcon() {
    return _flatButtonIcon;
  }

  //---------------RaisedButton---------------------

  // RaisedButton 组件
  Widget _raisedButtonText = RaisedButton(
    child: Text('RaisedButton'), //按钮文字
    textColor: Colors.purple, //按钮文字颜色
    onPressed: () {}, //按钮点击事件
    splashColor: Colors.grey, //点击时溅墨效果颜色
    elevation: 5.0,
    shape: StadiumBorder(), //Stadium Border翻译体育场边界,所以像跑道
  );

  Widget getRaisedButtonText() {
    return _raisedButtonText;
  }

  // RaisedButton 组件带Icon
  Widget _raisedButtonIcon = RaisedButton.icon(
    icon: Icon(Icons.add_a_photo), //按钮图标
    label: Text('RaisedButtonIcon'), //按钮文字
    onPressed: () {},
    splashColor: Colors.blueAccent,
    textColor: Colors.blueAccent,
    elevation: 1.0,
    //倒角,像菱形
    shape: BeveledRectangleBorder(borderRadius: BorderRadius.circular(60.0)),
  );

  Widget getRaisedButtonIcon() {
    return _raisedButtonIcon;
  }

  //---------------OutlineButton---------------------

  // OutlineButton 组件 描边按钮
  Widget _outlineButtonText = OutlineButton(
    child: Text('RaisedButton'), //按钮文字
    textColor: Colors.purple, //按钮文字颜色
    onPressed: () {}, //按钮点击事件
    splashColor: Colors.grey, //点击时溅墨效果颜色
    shape: StadiumBorder(), //Stadium Border翻译体育场边界,所以像跑道
    //设置 描边颜色
    borderSide: BorderSide(color: Colors.black),
    highlightedBorderColor: Colors.red, //点击时,边框变色
  );

  Widget getOutlineButtonText() {
    return _outlineButtonText;
  }

  // OutlineButton 组件带Icon
  Widget _outlineButtonIcon = OutlineButton.icon(
    icon: Icon(Icons.add_a_photo), //按钮图标
    label: Text('RaisedButtonIcon'), //按钮文字
    onPressed: () {},
    splashColor: Colors.blueAccent,
    textColor: Colors.blueAccent,
    //倒角,像菱形
    shape: BeveledRectangleBorder(borderRadius: BorderRadius.circular(60.0)),
    //设置 描边颜色
    borderSide: BorderSide(
      color: Colors.deepPurple,
    ),
  );

  Widget getOutlineButtonIcon() {
    return _outlineButtonIcon;
  }

  //---------------Row---------------------
  // Expanded 与 Row 配合使用,会让Button 等分占用所有空间
  Widget _rowButton = Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
      //Expanded 包裹OutlineButton 可以自适应,占完剩余空间
      Expanded(
        child: OutlineButton(
          child: Text('Button'),
          onPressed: () {},
          splashColor: Colors.deepPurple,
          borderSide: BorderSide(
            color: Colors.black,
          ),
          textColor: Colors.black,
          highlightedBorderColor: Colors.grey,
        ),
      ),
      SizedBox(
        width: 25.0,
      ),
      Container(
        width: 150.0, //Container 包裹OutlineButton 可以指定尺寸
        child: OutlineButton(
          child: Text('Button'),
          onPressed: () {},
          splashColor: Colors.deepPurple,
          shape: StadiumBorder(),
          borderSide: BorderSide(
            color: Colors.black,
          ),
          textColor: Colors.black,
          highlightedBorderColor: Colors.grey,
        ),
      ),
      SizedBox(
        width: 25.0,
      ),
      Expanded(
        child: OutlineButton(
          child: Text('Button'),
          onPressed: () {},
          splashColor: Colors.deepPurple,
          borderSide: BorderSide(
            color: Colors.black,
          ),
          textColor: Colors.black,
          highlightedBorderColor: Colors.grey,
        ),
      ),
    ],
  );

  Widget getRowButton() {
    return _rowButton;
  }

  //---------------ButtonBar-----按钮横向排布----------------
  Widget getButtonBar(BuildContext context) {
    return Theme(
      data: Theme.of(context).copyWith(
        buttonTheme: ButtonThemeData(
          //设置水平方向边距
          padding: EdgeInsets.symmetric(horizontal: 25.0)
        )
      ),
      child: ButtonBar(
        children: <Widget>[
          OutlineButton(
            child: Text('RaisedButton'), //按钮文字
            textColor: Colors.purple, //按钮文字颜色
            onPressed: () {}, //按钮点击事件
            splashColor: Colors.grey, //点击时溅墨效果颜色
            shape: StadiumBorder(), //Stadium Border翻译体育场边界,所以像跑道
            //设置 描边颜色
            borderSide: BorderSide(color: Colors.black),
            highlightedBorderColor: Colors.red, //点击时,边框变色
          ),
          OutlineButton(
            child: Text('RaisedButton'), //按钮文字
            textColor: Colors.purple, //按钮文字颜色
            onPressed: () {}, //按钮点击事件
            splashColor: Colors.grey, //点击时溅墨效果颜色
            shape: StadiumBorder(), //Stadium Border翻译体育场边界,所以像跑道
            //设置 描边颜色
            borderSide: BorderSide(color: Colors.black),
            highlightedBorderColor: Colors.red, //点击时,边框变色
          ),
        ],
      ),
    );
  }
}

演示效果:
在这里插入图片描述

showSnackbar.dart 弹出Snackbar简单封装:

import 'package:flutter/material.dart';
  // Snackbar
  void showSnackbar(String message){
    var snackBar = SnackBar(content: Text(message),);
    _scaffoldkey.currentState.showSnackBar(snackBar);
  }

  var _scaffoldkey = new GlobalKey<ScaffoldState>();

  getScaffoldkey(){
    return _scaffoldkey;
  }
Flutter 专题 七十九 基于Tinker的Flutter热更新实战 本文详细介绍了在Flutter Android应用中集成Tinker实现热更新的完整实战方案。针对线上紧急Bug修复需求,通过修改so库加载路径,利用Tinker生成并下发轻量补丁包,实现用户无感更新。文章涵盖从环境配置、基准包制作、补丁生成到Bugly下发与监控的全流程,并总结了关键注意事项与避坑指南,为Flutter应用提供稳定的热更新能力。 阅读详情

相关推荐

《Flutter 控件大全》第二十九个:CupertinoActionSheet

如果你对Flutter还有疑问或者技术方面的疑惑,欢迎加入Flutter交流群(微信:laomengit)。 同时也欢迎关注我的Flutter公众号【老孟程序员】,公众号首发Flutter的相关内容。 Flutter地址:http://laomengit.com 里面包含160多个组件的详细用法。 CupertinoActionSheet CupertinoActionSheet组件是Cu...

老孟Flutter 1056

Flutter基建 - 按钮全解析

我是。

Taonce的博客 1532

《Flutter 控件大全》第七十九:Scaffold

如果你对Flutter还有疑问或者技术方面的疑惑,欢迎加入Flutter交流群(微信:laomengit)。 同时也欢迎关注我的Flutter公众号【老孟程序员】,公众号首发Flutter的相关内容。 Flutter地址:http://laomengit.com 里面包含160多个组件的详细用法。 Scaffold Scaffold实现了Material风格的基本布局结构,它提供了展示dr...

老孟Flutter 587

Flutter 04 按钮Button和事件处理、弹框Dialog、Toast

/ 自定义dialogFunction()?onClosed;@overridePadding(Align(),Align(),],),),Container(],),)),//top值,可以改变这个值来改变toast在屏幕中的位置)),///往Overlay中插入插入OverlayEntry///两秒后,移除Toast});//toast UI绘制Container(),msg,),],//处理重复多次点击//相同信息内容。

sziitjin的博客 1481

《Flutter 控件大全》第八十九:Stack 和IndexedStack

如果你对Flutter还有疑问或者技术方面的疑惑,欢迎加入Flutter交流群(微信:laomengit)。 同时也欢迎关注我的Flutter公众号【老孟程序员】,公众号首发Flutter的相关内容。 Flutter地址:http://laomengit.com 里面包含160多个组件的详细用法。 Stack Stack组件可以将子组件叠加显示,根据子组件的顺利依次向上叠加,用法如下: S...

老孟Flutter 1956

Flutter Button 按钮.dart

在 Flutter 里有很多的 Button,包括了:MaterialButton、RaisedButton、FloatingActionButton、FlatButton、IconButton、ButtonBar、DropdownButton 等。 一般常用的 Button 是 MaterialButton、IconButton、FloatingActionButton。 RaisedButton:凸起的按钮,其实就是 Material Design 风格的 Button FlatButton:扁平化的按钮 OutlineButton:线框按钮 IconButton:图标按钮 ButtonBar:按钮组 FloatingActionButton:浮动按钮 DropdownButton:下拉框按钮

dart系列(三) 按钮点击

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34019144的博客 469

电磁波函数复数表示法:为什么物理学家偏爱e^(ikz)而非cos(kr-wt)?

本文深入解析了电磁波函数复数表示法(如e^(ikz))相较于传统余弦形式的巨大优势。通过欧拉公式,复数形式将复杂的三角运算转化为简洁的指数运算,在微分、积分、线性叠加及处理相位时展现出极高的计算效率,是物理学家和工程师分析波动现象的核心工具。

weixin_29094539的博客 498

【Flutter】基础组件【09】Button

【Flutter】基础组件Button你会用吗?今天就带你解锁各种 button 的学习!

俊而不逊的博客 1149

CODESYS V3.5 SP17编程环境全攻略:从安装到多语言编程实战

本文全面解析CODESYS V3.5 SP17编程环境,从安装配置到多语言编程实战技巧。详细介绍了运行时环境设置、六种IEC 61131-3语言的特性对比与混合编程策略,以及高级功能开发如自定义算法模块和实时通信配置。适合工业自动化工程师快速掌握这一强大工具。

weixin_30632089的博客 489

学习笔记( 11 ) - 解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

烟溪彭于晏的博客 2万+

flutter 专题 六十九 -Flutter开发之Flare动画

Flutter的动画大体可以分为使用AnimationController 和Animation控制的基础动画、使用 Hero的转场动画和使用CustomPainter 的自定义动画三大类。除此之外,Flutter还支持矢量动画,是一种类似Android开发中的Lottie动画。Flare是一家可以快速制作矢量动画的网站,提供专门的Flutter组件来承载网站导出的动画文件,使用Flare创建的动画不仅可以有效减少安装包的体积,还能创建更加复杂绚丽的动画体验。

m0_61164038的博客 1469

MT6768平台Sensor Bring Up全流程实战:从驱动添加到问题排查(附避坑指南)

本文详细介绍了联发科MT6768平台Sensor Bring Up的全流程实战指南,从驱动添加、硬件配置到问题排查,提供了全面的避坑建议。内容涵盖环境准备、驱动文件集成、硬件接口配置、编译系统适配以及常见问题解决方案,帮助开发者高效完成传感器集成与调试工作。

weixin_30374009的博客 416

flutter 专题 八十九 Flutter的Hot Reload是如何做到的

Flutter 的热重载是基于 JIT 编译模式的代码增量同步。由于 JIT 属于动态编译,能够将 Dart 代码编译成生成中间代码,让 Dart VM 在运行时解释执行,因此可以通过动态更新中间代码实现增量同步。热重载的流程可以分为 5 步,包括:扫描工程改动、增量编译、推送更新、代码合并、Widget 重建。Flutter 在接收到代码变更后,并不会让 App 重新启动执行,而只会触发 Widget 树的重新绘制,因此可以保持改动前的状态,大大缩短了从代码修改到看到修改产生的变化之间所需要的时间。

m0_61164038的博客 1402

精度0.01%决定续航多20km|新能源汽车研发测试:功率分析仪到底有多硬核?

新能源汽车测试、功率分析仪、电驱系统、效率MAP、谐波THD、GB/T18488、CLTC工况、三电测试、台架标定、能量流分析。中的核心作用,用公式、思维导图、实战金句与避坑指南,帮研发测试人员把准数据、提效率、降返工,看完就能落地用。点击关注,进公众号主页查看历史文章,**台架接线图、效率MAP模板、GB/T18488测试清单等。优化弱磁/调制策略,高效区占比提升5%,CLTC续航直接+8~20km。同样工况,两次数据差0.8%,报告根本没法交。结果:数据飘、定位慢、反复返工、认证不过。

优快云-新能源汽车研发测试专业博主 167

在 SAP BAS 中扩展标准 SAP Fiori 应用并部署到 ABAP 环境的完整实践指南

SAPUI5 Adaptation Project 摘要(148字) SAPUI5 Adaptation Project 提供了一种高效扩展标准Fiori应用的方式,通过创建应用变体(Application Variant)实现差异化定制。开发者可在SAP BAS中使用可视化编辑器修改UI元素(如隐藏字段、调整表格布局、添加按钮等),而无需重写业务逻辑。变体部署到ABAP环境后,可与标准应用并行使用,且能随原应用升级保持同步。典型应用场景包括为不同用户角色定制简化界面或增强特定功能,既满足个性化需求,又保留

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 183

flutter图标按钮_flutter框架一文通(二)

前一篇在此:熊爸天下:flutter框架一文通​zhuanlan.zhihu.com(续)第三部分 StatefulWidget 带界面改变交互的组件三十五. FittedBox //自适应填充盒模型此盒子允许他的子组件有自适应性import 'package:flutter/material.dart'; void main() => runApp(MyApp()); ...

weixin_42501688的博客 303

【libnice】meson + vs2022,生成win32工程

libnice

突围 947

Flutter完整开发指南 | Flutter&Dart – The Complete Guide

代码越来越多,构建flutter app时通常将大部件树分开并构建自己的部件,将代码拆分为多个较小的可能可重复使用的构建块,一般来说,涉及到分解小部件树和提取自定义小部件没有一种正确或错误的方法,取决于你想把哪些小部件放入自定义小部件。

默默测试!分享记录测试技术! 4940

《网络信息制作与发布》实训全流程:从专题策划、网站构建到前端实现与上线发布

本文详细介绍了WEB设计专题网站从策划到发布的全流程。主要内容包括:1.网络专题设计(确定主题、编写策划方案、素材搜集整理);2.网站结构构建(设计二级栏目、绘制布局图);3.艺术设计(配色方案、版式设计);4.网页制作(使用Dreamweaver进行标准化布局);5.信息发布(通过Dreamweaver和CuteFTP上传文件、网站维护与备份)。以"学习WEB设计"专题为例,采用框架结构,包含20余个栏目,使用深灰和蓝色为主色调。文章提供了完整的操作步骤和技术要点,适用于网站开发学习者

深耕计算机专业知识与技术。 1532

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

flutter 专题十九 Flutter 中FlatButton的替代方案

TextButton 和 ElevatedButton 只能提供有限的自定义选项,如果需要更多的自定义选项,例如设置按钮的形状或阴影等,可以使用 FlatButton 的替代品 OutlinedButton,或者直接使用 MaterialButton,它提供了更多的自定义选项。首先来看下TextButton,TextButton 用于显示文本按钮,与 FlatButton 相似,但默认为透明背景,更符合 Material Design 的风格。

m0_61164038的博客 330

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

第十九回:浮动按钮FloatingActionButton

本章回中主要介绍了浮动按钮的概念和使用方法,并且通过文字结合代码的方式进行了介绍。

talk_8的专栏 1575

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Flutter开发(二十九):Flutter热重启、热加载、调试与发布应用

1.Flutter热重启、热加载 2.混合开发调试 dart 代码 3.发布应用 1.Flutter热重启、热加载 Flutter自带热重启/热加载的功能,但是到了 Android 项目中集成 Flutter ,这个功能好像没用了。下面来打开这个功能。 将设备连接到电脑上,关闭 APP(很关键),然后打开终端进入到对应项目文件夹运行: flutter attach 运行成功提示等待连接: Waiting for a connection from Flutter on Mi 10

wuqingsen1的博客 3158

flutter 专题 五十九 Flutter 1.22 正式版发布

继 9 月 23 号发布 Flutter Windows 内测版 之后刚过几天,Flutter 官方在昨夜凌晨正式发布了 Flutter 1.22。本次版本的升级又带来了新一轮的功能发布,性能改进和问题修复。恰逢移动平台新版本(iOS 14/Android 11)的发布季,此次的版本更新保证了 Flutter 应用在 Android 11 和 iOS 14 上的兼容性,面向 iOS 14,本次更新包括了对 Xcode 12,新 Icon 的更新以及 App Clips 功能的预览。

m0_61164038的博客 1255

Flutter+OpenHarmony 实战:stopwatch 秒表应用

本文介绍了一个基于Flutter实现的开源秒表应用,重点解析了其核心功能与技术实现。项目采用Dart标准库Stopwatch作为计时源,通过Future.doWhile实现毫秒级UI刷新,并展示了状态管理、时间格式化、计圈记录等典型功能。文章从项目结构、环境配置到源码实现进行了详细剖析,包括应用入口配置、Material 3主题、异步刷新机制以及OpenHarmony平台适配等内容。该秒表应用不仅实现了基本的计时功能,还通过ListView.builder动态渲染圈速记录,展现了Flutter声明式UI与状

gao_dou的博客 550

# Flutter 三方库 鸿蒙天气日历助手项目实践:基于 AP120 与鸿蒙 6.0+ 的跨端开发案例

本文是一篇面向 Flutter 跨端开发场景的Flutter + 三方库 + 鸿蒙项目实践文档。文中以天气日历助手为案例,完整展示一个轻量级信息类应用的实现过程。展示今日日期和当前城市通过三方库获取网络天气数据使用卡片形式展示天气信息支持下拉刷新适合作为 Flutter 跨端开发的入门案例迁移到鸿蒙设备中运行Flutter 项目怎么创建三方库怎么接入页面怎么组织网络请求怎么写数据模型怎么设计如何把一个 Flutter 应用作为跨端项目思路迁移到鸿蒙场景。

2301_76423544的博客 567
上一篇: Flutter开发(十八)—— 表单
下一篇: Flutter开发(二十)—— 选择按钮
RedKeyer
博客等级 码龄11年 33粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值