Всегда ли Flutter создает новый виджет после вызова new?
У меня есть простое приложение с отслеживанием состояния, использующее WebView, когда в первый раз вызывается новый WebView, onWebViewCreated, но когда "новый WebView" второй раз, onWebViewCreated больше не будет вызываться, onPageFinished будет вызывать каждый раз. кажется, что Flutter не будет создавать новый WebView в методе сборки, он просто повторно использует существующий WebView, это правда? пример кода:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
void main() => runApp(MaterialApp(home: Sample()));
class Sample extends StatefulWidget {
@override
_SampleState createState() => _SampleState();
}
class _SampleState extends State<Sample> {
var url = 'https://en.wikipedia.org/wiki/Kraken';
Completer<WebViewController> _controller = Completer<WebViewController>();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: webPage(),
bottomNavigationBar: BottomAppBar(
child: new Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
RaisedButton(
onPressed: () {
if (_controller.isCompleted) {
setState(() {
url = 'https://en.wikipedia.org/wiki/Sea_monster';
_controller.future.then((ctrl) {
ctrl.loadUrl(url);
});
});
}
},
child: Text('load new url'),
),
],
),
),
);
}
Widget webPage() {
print('building new Webview?');
return new WebView(
initialUrl: url,
javascriptMode: JavascriptMode.unrestricted,
// debuggingEnabled: true,
onWebViewCreated: (WebViewController webViewController) {
print('webview created');
_controller.complete(webViewController);
},
onPageFinished: (finish) {
print('on page finished');
print(finish);
},
);
}
}