flutter 自定义 controller

FirstVC第一个页面

import 'package:flutter/material.dart';
import 'dart:ui';
import 'second.dart';

class FirstVC extends StatefulWidget {
  const FirstVC({Key? key}) : super(key: key);

  @override
  State<FirstVC> createState() => _FirstVCState();
}

class _FirstVCState extends State<FirstVC> {
  SecondVCController controller = SecondVCController();

  handleSecond() {
    print('调用controller');
    controller.goReloadData();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('FirstVC'),
        actions: [
          TextButton(
              onPressed: () {
                handleSecond();
              },
              child: Text('切换',style: TextStyle(color: Colors.black),))
        ],
      ),
      body: SecondVC(
        controller: controller,
      ),
    );
  }
}

SecondVC第二个页面

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


class SecondVCController extends ChangeNotifier {
  goReloadData(){
    print('发送信息');
    notifyListeners();
  }
}

class SecondVC extends StatefulWidget {
  SecondVCController ?controller;

  SecondVC({Key? key, this.controller}) : super(key: key);

  @override
  State<SecondVC> createState() => _SecondVCState();
}

class _SecondVCState extends State<SecondVC> {

  String text = "aaa";
  @override
  void initState() {

    if (widget.controller != null) {
      widget.controller!.addListener(() {
        print('接收到信息。自行处理');
        setState(() {
          text = "bbb";
        });
      });
    }

    super.initState();
  }


  @override
  Widget build(BuildContext context) {
    return Container(
      child: Text(text),
    );
  }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容