Flutter 自定义组件通过Controller暴露接口

535 阅读1分钟
class CounterWidget extends StatefulWidget {
  CounterController controller;

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

  @override
  State<CounterWidget> createState() => _CounterWidgetState();
}

class _CounterWidgetState extends State<CounterWidget> {
  int count = 0;

  @override
  void initState() {
    widget.controller._increase = () {
      setState(() {
        count++;
      });
    };
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Text("$count");
  }
}

class CounterController {
  void increase() {
    _increase?.call();
  }
  
  Function()? _increase;
}