flutter - flutter - 查看容器内的网页
问题描述
我正在尝试创建一个从屏幕左侧的 ListTiles 列开始的主从类型容器。当用户点击一个项目时,一个预设的 URL 将显示在屏幕的其余部分。点击不同的项目会显示不同的预设 URL。
我查看了 Flutter WebView 插件和webview_flutter包,但要么我对它们的理解不够好(很有可能!),要么它们还不能做我想让他们做的所有事情。
除了我刚才提到的,如果可能的话,我还希望网页打开缩放以适应它们所在的空间,但仍然可以捏成其他尺寸。
ps 我是 Flutter 新手,对小部件构造和内存管理也很困惑。如果我尝试使用WebView
小部件之类的东西,我不知道我是否只是在每次想要打开页面时编写一个 WebView 小部件,或者我是否以某种方式创建了一个 WebView 小部件,添加一个controller
, 和编码.loadFromUrl()
方法。
解决方案
您可以创建一个有两个孩子的行。第一个孩子将是由 ListTiles 组成的 ListView。第二个孩子将是 WebView。当用户点击列表磁贴时,使用控制器加载 url。在您的情况下,无需每次都重建 WebView
使用 webview_flutter 的示例:
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
WebViewController _controller;
List pages = ["https://google.com", "https://apple.com"];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Row(
children: <Widget>[
Container(
width: 300,
child: ListView.builder(
itemCount: pages.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(pages[index]),
onTap: () {
if (_controller != null) {
_controller.loadUrl(pages[index]);
}
},
);
},
),
),
Expanded(
child: WebView(
onWebViewCreated: (WebViewController c) {
_controller = c;
},
initialUrl: 'https://stackoverflow.com',
),
),
],
));
}
}
推荐阅读
- dependency-injection - 使用 autofac 解决在不同项目中注册的组件的依赖关系
- oauth - In OAuth2, is the /introspect endpoint meant for the OAuth Client to call, or the OAuth Resource Server to call?
- python - 在生产环境中运行两个烧瓶 API 的 Python 应用程序
- c# - 使c#线程中的代码段不可中断
- reactjs - ReactJS 表单提交 this.props.history.push('/downloads') 未链接到新页面
- tableau-api - Tableau 获取过去 30 天的非活动用户
- integromat - 如何在我的自定义 Integromat 应用程序中上传文件?
- java - 如何在 Eclipse 中将多个 java 文件导出为单个可运行的 jar 文件?
- python - 如果字符串名称完全相同,则获取变量的值
- email - 发送网格电子邮件可能在黑名单上