zoukankan      html  css  js  c++  java
  • Flutter 重写导航代理

    假数据 代码:

    const searchList = [
    "aa北京-上海",
    "北京-海南 a",
    "北京-郑州 bb",
    "北京-cc 日本",
    "北京dd -韩国"
    ];

    const defalutSuggert = [
    "推荐路线 上海 - 郑州",
    "推荐路线 西安 - 郑州"
    ];
    代理代码:
    import 'package:flutter/material.dart';
    import 'asset.dart';
    //重写搜索栏
    class seachBarDelegat extends SearchDelegate<String>{
    @override
    List<Widget> buildActions(BuildContext context){
    return [
    IconButton(
    icon: Icon(Icons.clear),
    onPressed: () =>query = "",//点击X 把搜索内容置空
    ),

    ];
    }
    @override
    Widget buildLeatRding(BuildContext context){//重写左边样式---类似 leftBaritem
    return IconButton(
    icon: AnimatedIcon(
    icon: AnimatedIcons.menu_arrow,progress: transitionAnimation,
     
    ),//带动画的icon
    onPressed: () => close(context,null),//关闭页面
    );
    }
    @override
    Widget buildResults (BuildContext context){//重写搜索点击结果
    return Container(
    100.0,
    height: 100.0,
    child: Card(
    color: Colors.orange,
    child: Center(
    child: Text(query),
    ),
    ),
    );
    }
    @override
    Widget buildSuggestions(BuildContext context){//重写搜索结果
    final suggestList = query.isEmpty
    ? defalutSuggert
    : searchList.where((input)=>input.startsWith(query)).toList();//按照搜索框的输入检索到匹配的数据后得到结果 - 类似于SQL在列表中根据输入的文字检索到的结果,w但是只能从输入开始的字符比较是否匹配

    return ListView.builder(
    itemCount: suggestList.length,
    itemBuilder: (context,index)=>ListTile(
    title: RichText(//富文本
    text: TextSpan(
    text: suggestList[index].substring(0,query.length),//截取搜索的字 从0位 到 搜索的字
    style: TextStyle(
    color: Colors.blueAccent,fontWeight: FontWeight.bold//字体加粗
    ),
    children: [
    TextSpan(
    text:suggestList[index].substring(query.length),//截取之后其他的字
    style: TextStyle(
    color: Colors.grey
    )
    )
    ]
    ),
    ),
    ),
    );
    }

    }
    总结:
     

    //重写导航代理

     

     

    buildSuggestions(//重写搜索结果

    //按照搜索框的输入检索到匹配的数据后得到结果 - 类似于SQL在列表中根据输入的文字检索到的结果,w但是只能从输入开始的字符比较是否匹配

     

    xxx.where((input)=>input.startWith(query)).tolist();xxx 是集合,从输入开始比较 就是因为有startWith,query是输入的字符

     

    )

    buildLead(//重写 左边导航栏 控件 类似 leftBarItem

    return IconButton(

    onpress:()=>close(conext, null);//关闭当前页面

    )

     

    )

    buildResults(//重写点击键盘搜索确认之后的结果

    )

     

  • 相关阅读:
    hdu 6836
    2019 树形—DP
    2020牛客暑期多校训练营(第六场)
    hdu 6756 Finding a MEX 线段树
    2020 Multi-University Training Contest 2
    spring boot maven 打jar包 不能引入外部jar
    git 操作命令
    homestead 安装swoole
    MYSQL-触发器
    再次认知const
  • 原文地址:https://www.cnblogs.com/pp-pping/p/12187904.html
Copyright © 2011-2022 走看看