flutter - 如何在另一个 dart 文件中声明函数并到达主要变量
问题描述
这是 Flutter 默认应用的一部分。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
/*
void _incrementCounter() {
setState(() {
_counter++;
});
}
*/
}
这就是我想做的。
import 'package:fdgdfg/main.dart';
class Functions {
void _incrementCounter() {
setState(() {
_counter++;
});
}
}
我想在另一个文件中声明函数,我想从这个文件中访问并使用主文件的变量。但我不能使用这些变量,我不能 setstate .. 我该怎么做?
解决方案
正如我在评论中所说,您似乎对Classes
文件的工作方式和导入方式有一些严重的误解。我建议您访问https://dart.dev并了解有关 Dart 语言的更多信息。
无论如何,这里有一个示例,说明如何在另一个文件上创建class
with methods
、导入该文件、实例化类并在 main 上使用其方法class
。请注意,您不能像您尝试的那样setState
在普通 Dart 上运行。class
这只能在class
扩展StatefulWidget
Flutter 类的情况下完成。
import 'package:flutter/material.dart';
import 'package:my_app/my_functions.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: MyWidget(),
),
),
);
}
}
class MyWidget extends StatelessWidget {
final MyMethods methods = MyMethods();
@override
Widget build(BuildContext context) {
return RaisedButton(
child: Text('Say hello'),
onPressed: () => methods.sayHello(),
);
}
}
my_functions.dart
class MyMethods {
void sayHello(){
print('Hello');
}
}
在继续创建 Flutter 应用程序之前,您真的应该尝试更好地了解methods
、classes
、context
和工作原理。StatefulWidgets
推荐阅读
- ruby-on-rails - Ruby 方法 Double Splat 与 Hash
- java - 如果天数包括另一年的天数,我如何获得剩余天数?
- swift - 弹出 ViewController 后如何检查堆栈顶部的 ViewController 是否是特定的?
- python - Cython Memoryview 段错误
- ssl - Kubernetes Ingress SSL 证书问题
- html - 作为电子邮件发送时,如何删除表格行之间的空格?
- php - log_message 在 codeigniter 的应用程序文件夹下不起作用
- angular - 如何以角度制作重叠的头像图标?我可以从中获得有关此内容的任何参考链接
- java - 使用socket时如何在android studio中搜索网络?
- android - 如何在java中将西方日期转换为日本日期?