반응형
질문
나는 플러터 앱에서 flutter_web_view 패키지를 사용하는 중입니다. 여러 가지 파일에서 사용하고 있으며, 앱의 어디에서든지 _launchwebview 함수를 참조하여 자체 파일을 만들고 싶습니다. 왜냐하면 작동하려면 여러 줄의 코드가 필요하기 때문입니다. 파일을 참조하고 정보를 전달하는 방법은 알지만 메서드/함수는 모르겠습니다. 다음은 클래스 코드입니다...
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();
반응형
댓글