flutter 自定义 controller

2023-05-07  本文已影响0人  neobuger

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),
    );
  }
}

上一篇 下一篇

猜你喜欢

热点阅读