flutter选择国家或地区的电话号码区号

在这里插入图片描述

1.国家区号列表(带字母索引侧边栏)

import 'package:generated/l10n.dart';
import 'package:widget/login/area_index_bar_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';class LoginAreaListWidget extends StatefulWidget {State<StatefulWidget> createState() => _LoginAreaListWidgetState();
}class _LoginAreaListWidgetState extends State<LoginAreaListWidget> {// 字典里面放item和高度对应的数据final Map _groupOffsetMap = {};ScrollController _scrollController;final List<Areas> _listDatas = [];void initState() {super.initState();_listDatas.addAll(datas);var _groupOffset = 80.h * (_headerData.length - 1) + 40.h;//经过循环计算,将每一个头的位置算出来,放入字典for (int i = 0; i < _listDatas.length; i++) {if (_listDatas[i].name == null) {_groupOffsetMap.addAll({_listDatas[i].indexLetter: _groupOffset});_groupOffset += 40.h;} else {_groupOffset += 80.h;}}_scrollController = ScrollController();}final List<Areas> _headerData = [Areas(),Areas(areaCode: 86, name: S.current.c1),Areas(areaCode: 852, name: S.current.c2),Areas(areaCode: 1, name: S.current.c3),Areas(areaCode: 44, name: S.current.c4),Areas(areaCode: 1, name: S.current.c5),Areas(areaCode: 61, name: S.current.c6),Areas(areaCode: 49, name: S.current.c7),Areas(areaCode: 81, name: S.current.c8),];Widget _itemForRow(BuildContext context, int index) {// 系统cellif (index < _headerData.length) {if (index == 0) {return _FriendsCell(name: S.current.remen,groupTitle: S.current.remen,);}return _FriendsCell(areaCode: _headerData[index].areaCode,name: _headerData[index].name,hideBorder: index == _headerData.length - 1 ? true : false,);}int length = _headerData.length;//显示剩下的cell//如果当前和上一个cell的indexLetter一样,就不显示bool _hideIndexLetter = (index - length > 0 &&_listDatas[index - length].indexLetter ==_listDatas[index - (length + 1)].indexLetter);// 如果当前和下一个cell的indexLetter不一样,就不显示borderbool _hideBorder = index + 1 == _listDatas.length + _headerData.length? true: (index - length > 0 &&_listDatas[index - length].indexLetter !=_listDatas[index - (length - 1)].indexLetter);return _FriendsCell(areaCode: _listDatas[index - length].areaCode,name: _listDatas[index - length].name,groupTitle:_hideIndexLetter ? null : _listDatas[index - length].indexLetter,hideBorder: _hideBorder);}Widget build(BuildContext context) {return Stack(children: [Container(child: ListView.builder(itemBuilder: _itemForRow,controller: _scrollController,itemCount: _listDatas.length + _headerData.length,),),Positioned(top: 0,right: 0,bottom: 0,child: Container(width: 100.w,child: AreaIndexBarWidget(indexBarCallBack: (String str) {if (_groupOffsetMap[str] != null) {_scrollController.animateTo(_groupOffsetMap[str],duration: Duration(milliseconds: 10),curve: Curves.easeIn);}},),))],);}
}class _FriendsCell extends StatelessWidget {final int areaCode;final String name;final String groupTitle;final bool hideBorder;const _FriendsCell({this.areaCode, this.name, this.groupTitle, this.hideBorder}); //首字母大写Widget build(BuildContext context) {return groupTitle != null? Container(color: Colors.black.withOpacity(0.1),padding: EdgeInsets.only(left: 40.w),height: 40.h,alignment: Alignment.centerLeft,child: Text(groupTitle,style: TextStyle(fontSize: 24.sp, color: Color(0xff333333)),),): InkWell(onTap: () {Navigator.pop(context, areaCode);},child: Container(color: Colors.white,height: 80.h,padding: EdgeInsets.only(left: 40.w, right: 100.w),child: Container(decoration: BoxDecoration(border: hideBorder? Border(): Border(bottom: BorderSide(width: 1,color: Color(0xff5dc8b6).withOpacity(0.3)))),child: Row(mainAxisAlignment: MainAxisAlignment.spaceBetween,children: [Text(name,style:TextStyle(fontSize: 28.sp, color: Color(0xff333333)),),Text('+$areaCode',style:TextStyle(fontSize: 28.sp, color: Color(0xff333333)),)],),),),);}
}class Areas {final int areaCode;final String name;final String indexLetter; //首字母大写Areas({this.areaCode, this.name, this.indexLetter});
}List<Areas> datas = [Areas(indexLetter: 'A'),Areas(areaCode: 43, name: S.current.c9, indexLetter: 'A'),Areas(areaCode: 61, name: S.current.c10, indexLetter: 'A'),Areas(areaCode: 20, name: S.current.c11, indexLetter: 'A'),Areas(areaCode: 372, name: S.current.c12, indexLetter: 'A'),Areas(areaCode: 353, name: S.current.c13, indexLetter: 'A'),Areas(areaCode: 971, name: S.current.c14, indexLetter: 'A'),Areas(indexLetter: 'B'),Areas(areaCode: 32, name: S.current.c15, indexLetter: 'B'),Areas(areaCode: 55, name: S.current.c16, indexLetter: 'B'),Areas(areaCode: 359, name: S.current.c17, indexLetter: 'B'),Areas(areaCode: 354, name: S.current.c18, indexLetter: 'B'),Areas(areaCode: 92, name: S.current.c19, indexLetter: 'B'),Areas(areaCode: 507, name: S.current.c20, indexLetter: 'B'),Areas(areaCode: 595, name: S.current.c21, indexLetter: 'B'),Areas(areaCode: 51, name: S.current.c22, indexLetter: 'B'),Areas(areaCode: 48, name: S.current.c23, indexLetter: 'B'),Areas(areaCode: 1787, name: S.current.c24, indexLetter: 'B'),Areas(indexLetter: 'D'),Areas(areaCode: 49, name: S.current.c25, indexLetter: 'D'),Areas(areaCode: 45, name: S.current.c26, indexLetter: 'D'),Areas(areaCode: 1809, name: S.current.c27, indexLetter: 'D'),Areas(areaCode: 228, name: S.current.c28, indexLetter: 'D'),Areas(indexLetter: 'E'),Areas(areaCode: 593, name: S.current.c29, indexLetter: 'E'),Areas(areaCode: 7, name: S.current.c30, indexLetter: 'E'),Areas(indexLetter: 'F'),Areas(areaCode: 33, name: S.current.c31, indexLetter: 'F'),Areas(areaCode: 679, name: S.current.c32, indexLetter: 'F'),Areas(areaCode: 358, name: S.current.c33, indexLetter: 'F'),Areas(areaCode: 63, name: S.current.c34, indexLetter: 'F'),Areas(indexLetter: 'G'),Areas(areaCode: 995, name: S.current.c35, indexLetter: 'G'),Areas(areaCode: 1473, name: S.current.c36, indexLetter: 'G'),Areas(indexLetter: 'H'),Areas(areaCode: 82, name: S.current.c37, indexLetter: 'H'),Areas(areaCode: 31, name: S.current.c38, indexLetter: 'H'),Areas(indexLetter: 'J'),Areas(areaCode: 1, name: S.current.c39, indexLetter: 'J'),Areas(areaCode: 420, name: S.current.c40, indexLetter: 'J'),Areas(indexLetter: 'K'),Areas(areaCode: 385, name: S.current.c41, indexLetter: 'K'),Areas(areaCode: 974, name: S.current.c42, indexLetter: 'K'),Areas(indexLetter: 'L'),Areas(areaCode: 856, name: S.current.c43, indexLetter: 'L'),Areas(areaCode: 371, name: S.current.c44, indexLetter: 'L'),Areas(areaCode: 423, name: S.current.c45, indexLetter: 'L'),Areas(areaCode: 370, name: S.current.c46, indexLetter: 'L'),Areas(areaCode: 352, name: S.current.c47, indexLetter: 'L'),Areas(areaCode: 40, name: S.current.c48, indexLetter: 'L'),Areas(indexLetter: 'M'),Areas(areaCode: 389, name: S.current.c49, indexLetter: 'M'),Areas(areaCode: 60, name: S.current.c50, indexLetter: 'M'),Areas(areaCode: 960, name: S.current.c51, indexLetter: 'M'),Areas(areaCode: 356, name: S.current.c52, indexLetter: 'M'),Areas(areaCode: 52, name: S.current.c53, indexLetter: 'M'),Areas(areaCode: 377, name: S.current.c54, indexLetter: 'M'),Areas(areaCode: 976, name: S.current.c55, indexLetter: 'M'),Areas(areaCode: 382, name: S.current.c56, indexLetter: 'M'),Areas(areaCode: 212, name: S.current.c57, indexLetter: 'M'),Areas(areaCode: 95, name: S.current.c58, indexLetter: 'M'),Areas(areaCode: 1, name: S.current.c59, indexLetter: 'M'),Areas(areaCode: 1284, name: S.current.c60, indexLetter: 'M'),Areas(indexLetter: 'N'),Areas(areaCode: 977, name: S.current.c61, indexLetter: 'N'),Areas(areaCode: 234, name: S.current.c62, indexLetter: 'N'),Areas(areaCode: 47, name: S.current.c63, indexLetter: 'N'),Areas(areaCode: 27, name: S.current.c64, indexLetter: 'N'),Areas(indexLetter: 'P'),Areas(areaCode: 351, name: S.current.c65, indexLetter: 'P'),Areas(indexLetter: 'R'),Areas(areaCode: 81, name: S.current.c66, indexLetter: 'R'),Areas(areaCode: 46, name: S.current.c67, indexLetter: 'R'),Areas(areaCode: 41, name: S.current.c68, indexLetter: 'R'),Areas(indexLetter: 'S'),Areas(areaCode: 357, name: S.current.c69, indexLetter: 'S'),Areas(areaCode: 1869, name: S.current.c70, indexLetter: 'S'),Areas(areaCode: 1758, name: S.current.c71, indexLetter: 'S'),Areas(areaCode: 966, name: S.current.c72, indexLetter: 'S'),Areas(areaCode: 421, name: S.current.c73, indexLetter: 'S'),Areas(areaCode: 386, name: S.current.c74, indexLetter: 'S'),Areas(areaCode: 94, name: S.current.c75, indexLetter: 'S'),Areas(areaCode: 249, name: S.current.c76, indexLetter: 'S'),Areas(indexLetter: 'T'),Areas(areaCode: 255, name: S.current.c77, indexLetter: 'T'),Areas(areaCode: 66, name: S.current.c78, indexLetter: 'T'),Areas(areaCode: 676, name: S.current.c79, indexLetter: 'T'),Areas(areaCode: 216, name: S.current.c80, indexLetter: 'T'),Areas(areaCode: 90, name: S.current.c81, indexLetter: 'T'),Areas(indexLetter: 'W'),Areas(areaCode: 380, name: S.current.c82, indexLetter: 'W'),Areas(areaCode: 598, name: S.current.c83, indexLetter: 'W'),Areas(indexLetter: 'X'),Areas(areaCode: 30, name: S.current.c84, indexLetter: 'X'),Areas(areaCode: 36, name: S.current.c85, indexLetter: 'X'),Areas(areaCode: 64, name: S.current.c86, indexLetter: 'X'),Areas(areaCode: 65, name: S.current.c87, indexLetter: 'X'),Areas(areaCode: 34, name: S.current.c88, indexLetter: 'X'),Areas(areaCode: 852, name: S.current.c89, indexLetter: 'X'),Areas(indexLetter: 'Y'),Areas(areaCode: 91, name: S.current.c90, indexLetter: 'Y'),Areas(areaCode: 62, name: S.current.c91, indexLetter: 'Y'),Areas(areaCode: 972, name: S.current.c92, indexLetter: 'Y'),Areas(areaCode: 39, name: S.current.c93, indexLetter: 'Y'),Areas(areaCode: 44, name: S.current.c94, indexLetter: 'Y'),Areas(areaCode: 84, name: S.current.c95, indexLetter: 'Y'),Areas(indexLetter: 'Z'),Areas(areaCode: 56, name: S.current.c96, indexLetter: 'Z'),Areas(areaCode: 853, name: S.current.c97, indexLetter: 'Z'),Areas(areaCode: 886, name: S.current.c98, indexLetter: 'Z'),Areas(areaCode: 260, name: S.current.c99, indexLetter: 'Z'),
];

2.给列表添加appbar

import 'package:generated/l10n.dart';
import 'package:widget/custom_appbar.dart';
import 'package:widget/login/login_area_list_wdiget.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';class LoginAreaSelectPage extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(appBar: CustomAppBar(backgroundColor: Color(0xff5dc8b6),leading: IconButton(onPressed: () => Navigator.pop(context),icon: Icon(Icons.arrow_back_ios,color: Colors.white,),),title: Text(S.current.xuanzeguojia,style: TextStyle(fontSize: 38.sp,fontWeight: FontWeight.w600,color: Colors.white),),centerTitle: true,),body: LoginAreaListWidget(),);}
}

3.引用

var areaCode;
GestureDetector(onTap: () async {var result = await NavigatorUtil.push(LoginAreaSelectPage());if (result != null) {setState(() {areaCode = result;});}},child: Container(width:100,height:50,color:Colors.red));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现更高能效的汽车级低边驱动器NRVB140ESFT1G 带温度和电流限制 自保护低压侧驱动器

一起去了解关于汽车电子AEC Q101车规认证&#xff01;&#xff01;! 是一种针对分立半导体的可靠性测试认证程序&#xff0c;由汽车电子协会发布。这个认证程序主要是为了确保汽车电子产品在各种严苛的条件下能够正常工作和可靠运行。它包括了对分立半导体的可靠性、环境适应性…

(2022级)成都工业学院Java程序设计(JAVA)实验一:编写一个简单的Java程序

写在前面 1、基于2022级软件工程/计算机科学与技术实验指导书 2、代码仅提供参考 3、如果代码不满足你的要求&#xff0c;请寻求其他的途径 运行环境 window11家庭版 IntelliJ IDEA 2023.2.2 jdk17.0.6 实验要求 1、 控制台菜单。要求如下&#xff1a; 1&#xff09;…

Docker容器化技术(互联机制实现便捷互访)

容器的互联是一种让多个容器中的应用进行快速交互的方式。它会在源和接收容器之间创建连接关系&#xff0c;接收容器可以通过容器名快速访问到源容器&#xff0c;而不用指定具体的IP地址。 1.自定义容器命名 连接系统依据容器的名称来执行。因此&#xff0c;首先需要自定义一…

DataFunSummit 2023因果推断在线峰会:解码数据与因果,引领智能决策新篇章(附大会核心PPT下载)

在数据驱动的时代&#xff0c;因果推断作为数据科学领域的重要分支&#xff0c;正日益受到业界的广泛关注。DataFunSummit 2023年因果推断在线峰会&#xff0c;汇聚了国内外顶尖的因果推断领域专家、学者及业界精英&#xff0c;共同探讨因果推断的最新进展、应用与挑战。本文将…

[MYSQL数据库]--表内操作(CURD)

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、表的 Cre…

Mybatis的XML配置文件

Xml文件中写SQL 为什么要学? 学习了Mybatis中XML配置文件的开发方式了&#xff0c;大家可能会存在一个疑问&#xff1a;到底是使用注解方式开发还是使用XML方式开发&#xff1f; 官方说明&#xff1a;https://mybatis.net.cn/getting-started.html 结论&#xff1a;使用Myba…

【数据集】2023自动驾驶开源数据集-学习笔记

文章目录 1. 自动驾驶有哪些公开数据集2. 预测相关的数据集有哪些 1. 自动驾驶有哪些公开数据集 waymo open dataset 适应任务: 域适应&#xff0c;2D追踪&#xff0c;2D检测&#xff0c;3D追踪&#xff0c;3D检测&#xff0c;实时2D检测&#xff0c;实时3D检测&#xff0c;交互…

Python3 @get_time 装饰器

Python get_time 装饰器 get_time 装饰器可以用于计算函数的执行时间。 示例&#xff1a; import timedef get_time(func):def wrapper(*args, **kwargs):start_time time.time()func(*args, **kwargs)end_time time.time()print(f"函数 {func.__name__} 执行时间&am…

【数据挖掘】实验2:R入门2

实验2&#xff1a;R入门2 一&#xff1a;实验目的与要求 1&#xff1a;熟悉和掌握R数据类型。 2&#xff1a;熟悉和掌握R语言的数据读写。 二&#xff1a;实验内容 1&#xff1a;R数据类型 【基本赋值】 Eg.1代码&#xff1a; x <- 8 x Eg.2代码&#xff1a; a city …

php7.3.4连接sqlserver(windows平台)

前言 有个项目需要手上laravel连接客户的sqlserver数据库读取数据&#xff0c;故在本地开发的lnmp环境中&#xff0c;php需要增加扩展 过程 从微软官网下载sqlsrv扩展,注意注意php版本&#xff0c;下载地址 解压的文件会有nts和ts两个版本&#xff0c;本地打开phpinfo查看 将…

基于SSM框架的理发店管理系统的设计与实现【附项目源码】分享

基于SSM框架的理发店管理系统的设计与实现&#xff1a; 源码地址&#xff1a;https://download.csdn.net/download/qq_41810183/88842785 理发店管理系统设计与实现需求文档 一、引言 随着信息技术的发展和普及&#xff0c;各行业都在寻求信息化管理以提升服务效率与用户体验…

基于Springboot影城管理系统设计与实现

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…

惬意上手Redis

Redis介绍 Redis&#xff08;全称为REmote Dictionary Server&#xff09;是一个开源的、内存中的数据存储结构&#xff0c;主要用作应用程序缓存或快速相应数据库。 REmote Dictionary Server: 有道翻译Redis是“远程字典服务”&#xff0c;远程不过是远程访问&#xff0c;而…

计算机网络面经八股-解释一下HTTP长连接和短连接?

在HTTP/1.0中&#xff0c;默认使用的是短连接。也就是说&#xff0c;浏览器和服务器每进行一次HTTP操作&#xff0c;就建立一次连接&#xff0c;但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源&#xff0c;如JavaScript文件、图…

OpenCV和Mediapipe实现摸嘴或鼻检测

目录 引言 1.过程简介 2. 代码结构 2.1 导入库 2.2 初始化模型 2.3 读取视频流或摄像头 2.4 初始化FPS计算 2.5 主循环 2.6 转换BGR图像为RGB图像 2.7 运行姿势检测模型和手部检测模型 2.8 绘制姿势关键点及连接线 2.9 检测手部关键点 2.10 判断手部与鼻子、嘴的相对…

使用Flask快速搭建轻量级Web应用【第127篇—Flask】

使用Flask快速搭建轻量级Web应用 在Web开发领域&#xff0c;选择适合项目需求的框架至关重要。Flask&#xff0c;一个轻量级的Python Web框架&#xff0c;以其简洁、灵活和易扩展的特性而备受开发者青睐。本文将介绍如何使用Flask迅速搭建一个轻量级的Web应用&#xff0c;并通过…

数学建模——蒙特卡洛法

目录 1.介绍2.可以做的题型3.实战3.1求pi的值3.2求定积分x^2 的值 参加了大大小小很多场比赛了&#xff0c;但是都是混子&#xff0c;但还是打算记录一下吧&#xff0c;系统认真过一遍。后续功力深厚&#xff0c;会拓展写的文章&#xff0c;目前是干货&#xff0c;一些背景啥的…

C#多线程(5)——异步方法async与await

在上一章节中&#xff0c;为大家介绍了C#多线程&#xff08;4&#xff09;——任务并行库TPL&#xff0c;TPL是从.NetFramwork4.0后引入的基于异步操作的一组API&#xff0c;核心关注于任务【 T a s k 和 T a s k < T > \textcolor{red}{Task 和 Task<T>} Task和Ta…

轴向磁通电机(轴向电机)属于高效节能型电机 本土企业已具备高性能产品生产实力

轴向磁通电机&#xff08;轴向电机&#xff09;属于高效节能型电机 本土企业已具备高性能产品生产实力 按照磁通路径方向不同&#xff0c;电机可分为径向磁通电机以及轴向磁通电机两种类型。轴向磁通电机又称轴向电机&#xff0c;指电机旋转轴与磁通方向平行的磁通电机。与径向…

Ai-M61-32SU+字库+LCD

Ai-M61-32SU 有4M flash&#xff0c;可以下载一个200多K的GB2312_80字库 一、将gb2312_80.bin(字库文件)烧录到Ai-M61-32SU中 1、将gb2312_80.bin放到工程的根目录 2、修改flash_prog_cfg.ini文件&#xff0c;增加了partition和media部分 [cfg] # 0: no erase, 1:programmed …