function - 如何在 Dart/Flutter 中使用另一个文件的函数?

我有一个 Flutter 应用程序,我在其中使用了 flutter_web_view 包。我在几个不同的文件中使用它,并且很想创建自己的文件并简单地在我的应用程序中的任何位置使用 _launchwebview 函数进行引用,因为需要几行代码才能使其工作。我知道如何引用文件和传递信息,但不知道方法/函数。这是类(class)代码...

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

class ShopClass extends StatefulWidget {
  @override
  ShopClassState createState() => new ShopClassState();
}

class ShopClassState extends State<ShopClass> {
  String _redirectedToUrl;
  FlutterWebView flutterWebView = new FlutterWebView();
  bool _isLoading = false;

  @override
  initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    Widget leading;
    if (_isLoading) {
      leading = new CircularProgressIndicator();
    }
    var columnItems = <Widget>[
      new MaterialButton(
          onPressed: launchWebViewExample, child: new Text("Launch"))
    ];
    if (_redirectedToUrl != null) {
      columnItems.add(new Text("Redirected to $_redirectedToUrl"));
    }
    var app = new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          leading: leading,
        ),
        body: new Column(
          children: columnItems,
        ),
      ),
    );
    return app;
  }


  void launchWebViewExample() {
    if (flutterWebView.isLaunched) {
      return;
    }

    flutterWebView.launch("https://apptreesoftware.com",
        headers: {
          "X-SOME-HEADER": "MyCustomHeader",
        },
        javaScriptEnabled: false,
        toolbarActions: [
          new ToolbarAction("Dismiss", 1),
          new ToolbarAction("Reload", 2)
        ],
        barColor: Colors.green,
        tintColor: Colors.white);
    flutterWebView.onToolbarAction.listen((identifier) {
      switch (identifier) {
        case 1:
          flutterWebView.dismiss();
          break;
        case 2:
          reload();
          break;
      }
    });
    flutterWebView.listenForRedirect("mobile://test.com", true);

    flutterWebView.onWebViewDidStartLoading.listen((url) {
      setState(() => _isLoading = true);
    });
    flutterWebView.onWebViewDidLoad.listen((url) {
      setState(() => _isLoading = false);
    });
    flutterWebView.onRedirect.listen((url) {
      flutterWebView.dismiss();
      setState(() => _redirectedToUrl = url);
    });
  }



  void reload() {
    flutterWebView.load(
      "https://google.com",
      headers: {
        "X-SOME-HEADER": "MyCustomHeader",
      },
    );
  }
}

如何在另一个类中使用 launchWebViewExample

最佳答案

你可以只用那个函数写一个文件,比如:

test.dart

void launchWebView () {
  print("1234");
}

然后像这样导入该文件:

main.dart

import "test.dart";

class _MyHomePageState extends State<MyHomePage> {
   @override
   Widget build(BuildContext context) {
       launchWebView();

它不是很干净,但你可以做到。 或者,您可以使用具有静态方法的类,例如:

class test {
    static void foo() {
        print("1234");
    }
}

然后在你的代码中调用它(在导入之后):

test.foo();

https://stackoverflow.com/questions/48836636/

相关文章:

dart - Android Studio 3.0.1 上未显示新的 Flutter 项目向导

dart - 如何在 Flutter 中更改键盘上的文本输入操作按钮(返回/回车键)?

ios - 使用 Flutter 在 Windows 环境下开发 iOS 设备

dart - 如何检查当前路线是哪条?

android - Flutter 中的字符串 xml 文件

dart - 如何清除 Flutter 的图片缓存?

java - Flutter 应用程序体积太大

android - 如何构建符合 Google Play 64 位要求的应用程序?

dart - 如何在 flutter 中使用 url 编码的主体发出 HTTP POST 请求?

flutter - 如何修复 HttpException : Connection closed b