[英]call method in one stateful widget from another stateful widget - Flutter
[英]how to Call method in one stateful widget from another stateful widget
我在主頁 StatefullWidget 中有一個名為Counter()的方法,我想從我的 main.dart 調用這個方法。
我正在嘗試從我的 main.dart 文件中調用方法 Counter() 。 我在下面發布代碼
here is my homepage, class
import 'package:flutter/material.dart';
class homepage extends StatefulWidget {
const homepage({Key? key}) : super(key: key);
@override
_homepageState createState() => _homepageState();
}
class _homepageState extends State<homepage> {
@override
Widget build(BuildContext context) {
return Container();
}
Counter(){
//I want to call this method from my main.dart file
}
}
Here is my main.dart file
import 'package:flutter/material.dart';
Future<void> backgroundhandller(RemoteMessage message) async {
**Counter()** //I want to call here
}
void main() async {
FirebaseMessaging.onBackgroundMessage(backgroundhandller);
runApp(MaterialApp(
debugShowCheckedModeBanner: false,
title: "Taxiyee_Messaging_app",
home: LoginScreen(),
));
}
您應該將您的Counter()
方法聲明為static
(在您的build()
方法之外)。
static void Counter() {
//Your code
}
並使用調用(記得將主頁導入main.dart
文件)
Future<void> backgroundhandller(RemoteMessage message) async {
homepage.Counter();
}
_homepageState
class 是私有的,因為前面的_
你不能訪問它。 但是你可以把這個方法移到homepage
class 然后你可以從你導入它的任何地方調用它。
您還可以通過使用小部件 object 像這樣widget.counter()
在_homepageState
class 中使用計數器方法
這將是結束代碼:
class Homepage extends StatefulWidget {
const homepage({Key? key}) : super(key: key);
void count(){
//I want to call this method from my main.dart file
}
@override
_HomepageState createState() => _HomepageState();
}
class _HomepageState extends State<Homepage> {
@override
Widget build(BuildContext context) {
widget.count(); // This how you use it inside your State
return Container();
}
}
以下是如何在 main.dart 文件中使用它
import 'package:flutter/material.dart';
import 'homepage.dart';
Future<void> backgroundhandller(RemoteMessage message) async {
Homepage().count() //call it here or anywhere like this
}
void main() async {
FirebaseMessaging.onBackgroundMessage(backgroundhandller);
runApp(MaterialApp(
debugShowCheckedModeBanner: false,
title: "Taxiyee_Messaging_app",
home: LoginScreen(),
));
}
您會注意到我已經對名稱進行了一些更改以遵循慣例。 類名以大寫字母開頭,方法/函數以小寫字母開頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.