Comment utiliser les Fonctions d'un autre Fichier dans Dart / Flutter?
J'ai un Flottement application, où je suis en utilisant le flutter_web_view paquet. Je l'utilise sur plusieurs fichiers différents et aimerais créer son propre fichier et il suffit de faire référence à la _launchwebview fonction de n'importe où dans mon application, car il y a plusieurs lignes de code nécessaires pour le faire fonctionner. Je sais comment les fichiers de référence et de transmettre des informations, mais pas des méthodes/fonctions. Voici le code de la classe...
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",
},
);
}
}
Comment puis-je utiliser launchWebViewExample
dans une autre classe?
- Pouvez-vous s'il vous plaît partager un peu de code. On ne sait pas quel est le problème. Importer le fichier avec la fonction doit faire. Si vous souhaitez passer la fonction autour de il n'est pas vraiment une différence de champs ou d'autres variables.
- Est-ce cela que vous cherchez? stackoverflow.com/questions/12951989/...
- J'ai ajouté le code dans le fichier que j'ai créé. J'aimerais l'utiliser pour le lancement de la WebView dans un autre fichier sans l'ajout de toutes ces lignes de chaque fichier.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez écrire un fichier avec juste cette fonction, comme:
test.dart
et ensuite importer ce fichier comme ceci:
principal.dart
Il n'est pas vraiment propre, mais vous pouvez le faire.
Alternativement, vous pouvez utiliser une classe avec une méthode statique comme:
et puis dans le code de l'appeler comme ça (après l'importation):
Ou vous pouvez simplement déclarer toutes vos fonctions (helpers) à l'intérieur d'une classe et passer comme un argument à l'autre classe.
Vous souhaitez déclarer une fonction sur un niveau de classe
fichier foo.dart
barre de fichier.dart