概述

在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?...