【Python】Flutter之刷新局部控件

概述

在flutter开发时,有时候点击某个按钮,只需要刷新指定控件,而不需要将整个页面都刷新.

思路: 在待刷新控件里定义一个点击方法,点击方法里刷新本控件. 点击指定按钮时,去调用此待刷新控件里的点击方法.

流程图

【Python】Flutter之刷新局部控件

代码

main.dart

import 'package:flutter/material.dart';

import 'new_text.dart';

import 'new_button.dart';

void main() {

runApp(MyApp());

}

class MyApp extends StatelessWidget {

@override

Widget build(BuildContext context) {

return MaterialApp(

title: 'Flutter Demo',

theme: ThemeData(

primarySwatch: Colors.blue,

),

home: MyHomePage(title: 'Flutter Demo Home Page'),

);

}

}

class MyHomePage extends StatefulWidget {

MyHomePage({Key key, this.title}) : super(key: key);

final String title;

@override

_MyHomePageState createState() => _MyHomePageState();

}

class _MyHomePageState extends State<MyHomePage> {

GlobalKey<TextWidgetState> textKey = GlobalKey(); //设置key,绑定待刷新控件.

var _count = 1;

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(

title: Text(widget.title),

),

body: Center(

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: <Widget>[

TextWidget(textKey), //传入key给待刷新控件

//自定义的ButtonWidget控件,会传入一个onPressed参数.这个参数是名为OnPressed的方法,方法无参数.

//该方法最终是传递给了new_button.dart的RaisedButton控件调用.

ButtonWidget(

onPressed: () {

_count++;

textKey.currentState.onPressed( _count); ///点击button,调用TextWidget的onPressed方法

},

),

],

),

),

);

}

}

new_text.dart

import 'package:flutter/material.dart';

class TextWidget extends StatefulWidget {

//! 接收传过来的key

TextWidget(Key key) : super(key: key);

@override

State<StatefulWidget> createState() {

return TextWidgetState();

}

}

class TextWidgetState extends State<TextWidget> {

String _text="0";

@override

Widget build(BuildContext context) {

return Center(

child: Text(_text,style: TextStyle(fontSize: 20,color:Colors.green), ),

);

}

//在TextWidget的onPressed中单独调用TextWidget的setState,刷新本控件.

void onPressed(int count) {

setState(() {

_text = count.toString();

});

}

}

new_button.dart

import 'new_text.dart';

import 'package:flutter/material.dart';

typedef onPressed_changestate();

class ButtonWidget extends StatefulWidget {

//类变量,作为调用类时的参数

onPressed_changestate onPressed;

ButtonWidget({this.onPressed});

@override

State<StatefulWidget> createState() {

return _ButtonWidgetState(onPressed);

}

}

class _ButtonWidgetState extends State<ButtonWidget> {

onPressed_changestate new_onPressed;

_ButtonWidgetState(this.new_onPressed);

@override

Widget build(BuildContext context) {

return Center(

child: RaisedButton(

child: Text('count++',style: TextStyle(fontSize: 20),),

onPressed: new_onPressed,

//new_onPressed是main.dart调用该控件时传递过来的方法

//也就是 onPressed: () {

// _count++;

// textKey.currentState.onPressed( _count);

// },

),

);

}

}


Flutter 写的app, 需要源码可以私信~~

  • 简繁火星字体转换
  • 哄女友神器
  • 号码测吉凶
  • 电视节目直播表


最好的笔记软件

https://www.wolai.com/signup?...

以上是 【Python】Flutter之刷新局部控件 的全部内容, 来源链接: utcz.com/a/82868.html

回到顶部