价格行情三

224 阅读1分钟

webview组件

flutter的webview组件不止一种,我这里选择了官方组件webview_flutter。 几种webview组件的对比参考这里:juejin.cn/post/684490…

开始使用

1.第一步,导包 和任何一个 Flutter package 一样,我们需要在 pubspec.yml 中的 dependencies 下加入 webview_flutter 的 package

    dependencies:
        webview_flutter: ^0.3.10+4

然后在终端输入 Flutter package get ###2.创建该组件 引文件

    import 'package:webview_flutter/webview_flutter.dart;

2.组件的基本使用,先放个简单的链接试试

    WebView(
        initialUrl: url,
        javascriptMode: JavascriptMode.unrestricted,
      ),

3.不要忘了环境配置 在 IOS 模块的 Runner 中的 info.plist 文件中加入:

<key>io.flutter.embedded_views_preview</key>
<string>YES</string>

如果是https的链接还要加上:

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

自定义导航栏,包含搜索框

导航栏的设置位于AppBar,左侧返回按钮部分在leading里,其余部分在title里,这俩个属性可以当做正常的容器,往里面放组件就可以:

appBar: new AppBar(
//      centerTitle: true,
      title: TextFileWidget(),
      leading: GestureDetector(
          onTap: (){
            Navigator.of(context).pop();
          },
          child: Padding(
          padding: const EdgeInsets.only(
            left: 15.0,
            top: 17.0
          ),
          child: Text("返回"),
        ),
),

listview加一个随着滚动的headerview

不要用listview就好了,对于滚动组件相互嵌套的页面,可以使用CustomScrollView。

CustomScrollView(
        slivers: <Widget>[
          // 如果不是Sliver家族的Widget,需要使用SliverToBoxAdapter做层包裹
          SliverToBoxAdapter(    //这个是header
            child: Container(
              height: 150,
              color: Colors.green,
              child: Column(
              )
          ),
                    
      
          // 当列表项高度固定时,使用 SliverFixedExtendList 比 SliverList 具有更高的性能
          SliverFixedExtentList(             //这个是listview
              delegate: SliverChildBuilderDelegate(_buildListItem, childCount: 30),
              itemExtent: 48.0
          )
        ],
),

几种横向平铺调整坐标的方法

1.佛系调整法,使用Row组件的MainAxisAlignment,系统自动铺开

Row(
                mainAxisAlignment: MainAxisAlignment.spaceAround,
                mainAxisSize: MainAxisSize.max,
                children: <Widget>[
                ]
)

2.Container组件或其他的一些容器组件,有padding属性的

Container(
                    height: 40,
                    width:window.physicalSize.width ,
                    padding:const EdgeInsets.only(
            left: 10.0,
            top: 10.0
          ),
)