Flutter移动应用开发 - 城市选择器

该文章介绍了一个基于Flutter的库存管理应用,用户可以选择城市来管理库存。应用使用了address_picker包来实现省市区选择,通过ModalBottomSheet展示选择界面,选择后的城市信息会更新到库存管理界面。
摘要由CSDN通过智能技术生成

0. 项目简介

项目想法脱胎于2023年服务外包大赛A18题 随手买(详情

整个APP思路如下:

在这里插入图片描述

这篇博客主要服务于管理员界面的库存管理功能,在进入库存管理子界面后选择城市,根据城市购买管理库存。

1. 效果展示

在这里插入图片描述

2. 代码

依赖如下

dependencies:
  flutter:
    sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^1.0.2

dev_dependencies:
  flutter_test:
    sdk: flutter

  # The "flutter_lints" package below contains a set of recommended lints to
  # encourage good coding practices. The lint set provided by the package is
  # activated in the `analysis_options.yaml` file located at the root of your
  # package. See that file for information about deactivating specific lint
  # rules and activating additional ones.
  address_picker: ^0.0.1

相关文件如下

// 点击后进入这个界面
storebuy.dart
// 主要代码都在这
storePage.dart

storePage.dart

import 'package:address_picker/address_picker.dart';
import 'package:flutter/material.dart';
import 'storebuy.dart';

class storePage extends StatefulWidget {
  const storePage({Key? key}) : super(key: key);

  
  State<storePage> createState() => _storePageState();
}



class _storePageState extends State<storePage> {
  String city = "请选择城市";

  
  Widget build(BuildContext context) {
    return Scaffold(
      body: GestureDetector(
        behavior: HitTestBehavior.opaque,
        onTap: (){
          print("在不同页点击了空白区域!!!!!!!!!!!!!");
          Navigator.of(context).push(
            MaterialPageRoute<void>(
              builder: (context) => storebuy(city: city),
            ),
          );
        },
        child: Center(
          child: TextButton(
            child: Text(city, style: TextStyle(fontSize: 30),),
            onPressed: () {
              showModalBottomSheet(
                  context: context,
                  builder: (context) => BottomSheet(
                      onClosing: () { },
                      builder: (context) => Container(
                        height: 300.0,
                        child: AddressPicker(
                          style: TextStyle(color: Colors.black, fontSize: 17),
                          mode: AddressPickerMode.provinceCityAndDistrict,
                          onSelectedAddressChanged: (address) {
                            setState(() {
                              city = '${address.currentProvince.province}'+'${address.currentCity.city}'+'${address.currentDistrict.area}';
                            });
                          },
                        ),
                      )
                  )
              );
            },
          ),
        ),
      )

    );
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铖铖的花嫁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值