简体   繁体   English

如何在有状态小部件之外调用有状态小部件的方法

[英]How to Call Method of statefull Widget out side of the stateful widget

I Create stateful Widget Called Globals, (like below code) and I have a method ChatsCounter() inside this stateful Widget, how to Call this method inside main.dart.out side of stateful Widget,我创建了名为 Globals 的有状态 Widget,(如下面的代码)并且我在这个有状态 Widget 中有一个ChatsCounter()方法,如何在有状态 Widget 的 main.dart.out 端调用这个方法,

I want to Call ChatsCounter();我想调用 ChatsCounter(); inside maind.dart (like below.)在 maind.dart 内部(如下所示。)

import 'package:flutter/material.dart';
  void main() {
  FirebaseMessaging.onMessage.listen((message) {
    ChatsCounter(); // I want to Call here
  });
  runApp(
    MaterialApp(
      debugShowCheckedModeBanner: false,
      title: "Taxiyee_Messaging_app",
      home: Container(),
    ),
  );
}

**Here is my StatefulWidget :**

      import 'package:flutter/material.dart'; 
    class Globals extends StatefulWidget {
      const Globals({Key? key}) : super(key: key);
    
      @override
      _GlobalsState createState() => _GlobalsState();
    }
    
    class _GlobalsState extends State<Globals> {
      @override
      Widget build(BuildContext context) {
        return Container();
      }
    **//I want to call this method inside main.dart above**
      ChatsCounter() {
        setState(() {
          counter++;
        });
      }
    }

Try below code hope its help to you.试试下面的代码希望它对你有帮助。 create one final variable or var and call it as _GlobalsState() and pass it below.创建一个最终变量或 var 并将其命名为_GlobalsState()并在下面传递。

import 'package:flutter/material.dart';

final globalState = _GlobalsState();
void main() {
  globalState.chatsCounter();//call this way
  runApp(
    MaterialApp(
      debugShowCheckedModeBanner: false,
      title: "Taxiyee_Messaging_app",
      home: Container(),
    ),
  );
}

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

  @override
  _GlobalsState createState() => _GlobalsState();
}

class _GlobalsState extends State<Globals> {
  int counter = 0;
  @override
  Widget build(BuildContext context) {
    return Container();
  }

  chatsCounter() {
    print('Method Call');
    setState(() {
      counter++;
    });
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM