当前位置: 首页 > 后端技术 > Python

刷新Flutter本地控件

时间:2023-03-25 21:21:48 Python

概述在开发flutter时,有时点击一个按钮只需要刷新指定的控件,而不需要刷新整个页面。思路:在要刷新的控件中定义一个click方法,在click方法中刷新控件。单击指定的按钮,调用要刷新的控件中的click方法。流程图代码main.dartimport'package:flutter/material.dart';import'new_text.dart';import'new_button.dart';voidmain(){runApp(MyApp());}classMyAppextendsStatelessWidget{@overrideWidgetbuild(BuildContextcontext){returnMaterialApp(title:'FlutterDemo',theme:ThemeData(primarySwatch:Colors.blue,),home:MyHomePage(title:'FlutterDemoHomePage'),);}}classMyHomePageextendsStatefulWidget{MyHomePage({Keykey,this.title}):super(key:key);最终字符串标题;@override_MyHomePageStatecreateState()=>_MyHomePageState();}class_MyHomePageStateextendsState{GlobalKeytextKey=GlobalKey();//设置key,绑定要刷新的控件。变种_计数=1;@overrideWidgetbuild(BuildContextcontext){returnScaffold(appBar:AppBar(title:Text(widget.title),),body:Center(child:Column(mainAxisAlignment:MainAxisAlignment.center,children:[TextWidget(textKey),//Inputkeytothecontroltoberefreshed//自定义ButtonWidget控件,会传入一个onPressed参数,这个参数是一个名为OnPressed的方法,该方法是没有参数的。//这个方法最终传递给new_button.dart的RaisedButton控件调用。ButtonWidget(onPressed:(){_count++;textKey.currentState.onPressed(_count);///点击按钮调用TextWidget的onPressed方法},),],),),);}}new_text.dartimport'package:flutter/material.dart';classTextWidgetextendsStatefulWidget{//!接收传入的密钥TextWidget(Keykey):super(key:key);@overrideStatecreateState(){返回TextWidgetState();}}classTextWidgetStateextendsState{String_text="0";@overrideWidget构建(BuildContext上下文){returnCenter(child:Text(_text,style:TextStyle(fontSize:20,color:Colors.green),),);}//在TextWidget的onPressed中单独调用TextWidget的setState来刷新这个控件。voidonPressed(intcount){setState((){_text=count.toString();});}}new_button.dartimport'new_text.dart';import'package:flutter/material.dart';typedefonPressed_changestate();classButtonWidgetextendsStatefulWidget{//类变量,作为调用类onPressed_changestate时的参数onPressed;ButtonWidget({this.onPressed});@overrideStatecreateState(){返回_ButtonWidgetState(onPressed);}}class_ButtonWidgetStateextendsState{onPressed_changestatenew_onPressed;_ButtonWidgetState(this.new_onPressed);@overrideWidgetbuild(BuildContextcontext){returnCenter(child:RaisedButton(child:Text('count++',style:TextStyle(fontSize:20),),onPressed:new_onPress,//new_onPressed是在main.dart调用控制来这里的方法//是onPressed:(){//_count++;//textKey.currentState.onPressed(_count);//},),);}}Flutter写的app需要源码私信~~火星字体简繁体转换哄女朋友神器号测好坏电视节目直播表最好的笔记软件https://www.wolai.com/signup?……