首页 > 其他分享 >Flutter 中的 GlobalKey

Flutter 中的 GlobalKey

时间:2024-05-07 18:23:13浏览次数:17  
标签:Widget CounterButton GlobalKey build key 按钮 Flutter

前沿

flutter 局部刷新 可以用到GlobalKey

GlobalKey是一个特殊的标识符,它用于在Widget树中唯一标识一个Widget,

并允许我们在Widget树之外访问该Widget的状态或属性。它通常用于在多个Widget之间共享状态、访问子Widget的方法或属性,以及执行一些全局操作。

 

注意:

GlobalKey不应该在build方法中初始化,否则会每次build都重建GlobalKey,更好的办法是让State对象拥有GlobalKey对象,

然后在 State.initState 的方法中初始化GlobalKey。

下面用个代码案例来更好的理解
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  // 定义 GlobalKey 用于获取按钮的状态
  final GlobalKey<_CounterButtonState> buttonKey = GlobalKey();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Counter App'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              // 使用 CounterButton,并传入 GlobalKey
              CounterButton(key: buttonKey),
              SizedBox(height: 20),
              // 在这里显示当前计数
              ElevatedButton(
                onPressed: () {
                  // 当按钮被点击时,调用按钮的 increaseCount 方法
                  buttonKey.currentState?.increaseCount();
                },
                child: Text('Increase Count'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

// CounterButton Widget,用于显示当前计数
class CounterButton extends StatefulWidget {
  // 接收 GlobalKey
  const CounterButton({Key? key}) : super(key: key);

  @override
  _CounterButtonState createState() => _CounterButtonState();
}

class _CounterButtonState extends State<CounterButton> {
  int count = 0;

  // 增加计数的方法
  void increaseCount() {
    setState(() {
      count++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Text(
      'Count: $count',
      style: TextStyle(fontSize: 24),
    );
  }
}

 

我们首先创建了一个GlobalKey, 用于获取CounterButton的状态。然后我们在MyApp中使用CounterButton,并将这个GlobalKey传递给CounterButton。 当按钮被点击时,我们通过GlobalKey获取CounterButton的状态,并调用其方法来更新计数。    它允许我们在Flutter应用中跨Widget获取其他Widget的状态或执行操作。

标签:Widget,CounterButton,GlobalKey,build,key,按钮,Flutter
From: https://www.cnblogs.com/yf-html/p/18178124

相关文章

  • flutter 编译环境部署
    一. 编译环境安装1.安装ubuntu20.04,详细的教程请看以下链接VMware虚拟机下安装Ubuntu20.04(保姆级教程)_ubuntu20.04虚拟机-CSDN博客2.部署flutter环境,详细教程请参照以下链接构建flutter应用程序·sony/flutter-elinux维基·GitHub上注意:在进行docker映射时,必须在d......
  • flutter项目安装nfc_manager后项目运行不起来
    安装nfc_manager后运行一直卡着,生成不了APPAndroidManifest.xml中的已经添加了的权限,插件版本也是对的上的后面进行卸载→重装进行测试、在安装插件时看到有这样一段提示PleaseenableDeveloperModeinyoursystemsettings.Run startms-settings:developers toopense......
  • flutter中调安卓的方法
    安卓packagecom.example.xcx_dashan_app;importio.flutter.embedding.android.FlutterActivity;importandroid.annotation.SuppressLint;importandroid.content.Intent;importandroid.os.Bundle;importio.flutter.embedding.engine.FlutterEngine;importandroid......
  • flutter 结合 springBoot 完成登录 注册 功能
    后端接口 前端调用接口代码import'package:dio/dio.dart';import'package:flutter/material.dart';import'../page/login.dart';//注册功能Future<void>register(BuildContextcontext,Stringusername,Stringpassword,......
  • flutter 移动应用程序中打开URL
    url_launcher:^6.2.5 在Flutter中,url_launcher库是用于在移动应用程序中打开URL的常用工具。它允许你通过调用系统的浏览器或其他应用程序来打开指定的URL,比如网页链接、电子邮件链接、电话号码等。这个库提供了一种简单的方法来实现在应用中跳转到外部链接的功能,增强了应用的......
  • flutter锁定屏幕方向
    在flutter当中锁定屏幕是一个很常见的操作。import'package:flutter/material.dart';import'package:flutter/services.dart';import'HomePage.dart';voidmain()async{WidgetsFlutterBinding.ensureInitialized();//这句一定要有,要不然会报错SystemChrome......
  • Got socket error trying to find package flutter_lints at https://pub.dev Flutter
    最近想继续玩下Flutter,发现pub.dev居然被封锁了,试了下网上的方案,都不可行,尝试组合了一下,用下面的方案解决了。第一步:找到这个文件D:\flutter\packages\flutter_tools\lib\src\http_host_validator.dart把下面的地址修改为:constStringkPubDev='https://pub-web.flutter-io......
  • flutter 尝试创建第一个页面(三)
    新建目录assets 存放图片在pubspec..yaml中添加flutter:#ThefollowinglineensuresthattheMaterialIconsfontis#includedwithyourapplication,sothatyoucanusetheiconsin#thematerialIconsclass.uses-material-design:trueasset......
  • flutter 环境搭配 (一)
    首先下载flutterSDKFlutter中文网官网(p2hp.com 选择下载SDK解压后,添加到环境变量中。 配置国内镜像,PUB_HOSTED_URL=https://pub.flutter-io.cnFLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn 接下来配置androidstudio  最后在终端输入flutte......
  • flutterr 检测应用版本号、服务器下载文件 以及实现 App 自动升级、安装
    依赖package_info_plus:^7.0.0path_provider:^2.1.2#查找文件获取文件存储路径open_file:^3.3.2#打开文件插件permission_handler:^11.3.1#检测Apk是否拥有权限配置权限<!--在Android6(Marshmallow)之前的版本中,明确声明网络权限--><uses-perm......