gpt4 book ai didi

class - Flutter:从另一个文件的父类调用子类函数

转载 作者:行者123 更新时间:2023-12-03 02:49:34 24 4
gpt4 key购买 nike

问题:
如何从IconButton的onPressed()调用methodA()。
我尝试通过使用GlobalKey来做到这一点:
GlobalKey <_MyButtonState> globalKey = GlobalKey();
但是它返回一个错误。
我已经阅读了许多论坛,并且尝试了所有提出的解决方案,但是没有一个对我有用。
码:
main.dart

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

void main() {
runApp(MaterialApp( title: 'My app', home: MyApp(),));
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
leading: IconButton(
icon: Icon(Icons.help),
onPressed: () {
// how can I call methodA from here?
},
),
),
body: HomePage(),
),
);
}
}

class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Center(
child: MyButton(),
);
}
}
button.dart
import 'package:flutter/material.dart';

class MyButton extends StatefulWidget {
@override
_MyButtonState createState() => _MyButtonState();
}

class _MyButtonState extends State<MyButton> {

@override
Widget build(BuildContext context) {
return Container( );
}

void methodA(){
print('methodA');
}

}
我已经阅读了许多论坛,并且尝试了所有提出的解决方案,但是没有一个对我有用。

最佳答案

首先,您必须将文件作为package导入main.dart:
Main.dart :(只是编写导入文件的方式)

import 'package:prioject_name/file_name.dart';
注意:这适用于lib目录下的文件。
如果您的文件位于lib内的其他目录下
然后相应地添加路径

例如:Button.dart在lib文件夹内的widgets文件夹内:
lib
|____widgets
|____Button.dart
那么import语句将如下所示:
import 'package:prioject_name/widgets/Button.dart';
然后尝试使用全局键方法来调用该函数:

如果仍然无法使用,则可以使用我的方法,
我如何从 classonPressed中的不同 onTapped调用方法:
您的Button.dart文件。
import 'package:flutter/material.dart';

// changed the method definition class
class MyButton extends StatefulWidget {
void methodA(){
print('methodA');
}
@override
_MyButtonState createState() => _MyButtonState();
}

class _MyButtonState extends State<MyButton> {

@override
Widget build(BuildContext context) {
...
widget.methodA(); // this would call the method A, anywhere inside the Widget build() function.
return Container( );
}


}
现在在Main.dart中:
import 'package:prioject_name/Button.dart';

//call the function here using className().functioName();
....
onPressed(){
MyButton().methodA();
}

关于class - Flutter:从另一个文件的父类调用子类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63788504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com