这是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++;
});
}
}
我想在另一个文件中声明函数,并且从这个文件中我想到达并使用主文件的变量。但是我不能使用这些变量,我不能设置状态.. 我该怎么办?
答案 0 :(得分:0)
正如我在评论中所说,您似乎对Classes
和导入文件的工作方式有一些误解。我建议您访问https://dart.dev,并进一步了解Dart语言。
无论如何,这里有一个示例,说明如何在另一个文件上用class
创建一个methods
,导入该文件,实例化该类,并在主class
上使用它的方法。 。请注意,您无法像尝试那样在普通Dart setState
上运行class
。这只能在扩展class
Flutter类的StatefulWidget
上完成。
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
的工作方式。