如何在另一个Dart文件中声明函数并到达主要变量

时间:2020-07-14 20:21:29

标签: 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++;
    });
  }
}

我想在另一个文件中声明函数,并且从这个文件中我想到达并使用主文件的变量。但是我不能使用这些变量,我不能设置状态.. 我该怎么办?

1 个答案:

答案 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应用之前,您应该真正尝试更好地了解methodsclassescontextStatefulWidgets的工作方式。