flutter 底部弹窗和中间弹窗
底部弹窗
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';class GameHub extends StatefulWidget {GameHub({Key? key}) : super(key: key);@overrideState<StatefulWidget> createState() => GameHubState();
}class GameHubState extends State<GameHub> {@overridevoid initState() {super.initState();}@overridevoid dispose() {super.dispose();}mySetState(callBack) {if (mounted) {setState(() {callBack();});}}@overrideWidget build(BuildContext context) {return Container();}
}//显示游戏中心弹窗
showGameHubDialog(BuildContext context) {showModalBottomSheet(shape: const RoundedRectangleBorder(borderRadius: BorderRadius.only(topLeft: Radius.circular(16), topRight: Radius.circular(16))),isScrollControlled: true,enableDrag: false,context: context,builder: (context) => GameHub());
}
中间弹窗
import 'dart:convert';import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:base_utils/base_utils.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import '../../../router.dart';
import '../../common/Global.dart';
import '../../common/backgroundWall.dart';
import '../../http/api.dart';
import '../../http/net_callback.dart';
import '../../http/rxhttp.dart';
import '../../http/utils/NetUtils.dart';
import '../../http/utils/response.dart';
import '../../models/country_list_model.dart';///首页列表筛选地区弹窗
class FirstSelectCountry extends StatefulWidget {FirstSelectCountry({Key? key}) : super(key: key);@overrideState<StatefulWidget> createState() => FirstSelectCountryState();
}class FirstSelectCountryState extends State<FirstSelectCountry> {List<CountryItem> countryListData = [];String selectCountryShortCode = '';@overridevoid initState() {getCountryList();super.initState();}@overridevoid dispose() {super.dispose();}//国家地区列表getCountryList() {RxHttp<Response>()..init()..setBaseUrl(Api.BUSINESS_BASE_API)..setPath(Api.COUNTRY_INFO_LIST)..setCacheMode(CacheMode.FIRST_CACHE_THEN_REQUEST)..setJsonTransFrom((p0) => Response.fromJson(json.decoder.convert(p0)))..setParams({})..call(NetCallback(onNetFinish: (response) {if (response.code == 200) {CountryListModel countryListModel =CountryListModel.fromJson(response.data);handleCountryList(countryListModel);}},onCacheFinish: (response) {if (response.code == 200) {CountryListModel countryListModel =CountryListModel.fromJson(response.data);handleCountryList(countryListModel);}},onNetError: (errorCode, error) {}),server: Servers.businessServer);}handleCountryList(CountryListModel countryListModel) {if (countryListModel.countryList != null) {if (countryListModel.countryList!.isNotEmpty) {countryListData = countryListModel.countryList ?? [];mySetState(() {});}}}mySetState(callBack) {if (mounted) {setState(() {callBack();});}}@overrideWidget build(BuildContext context) {return Center(child: Container(decoration: BoxDecoration(color: Colors.white,borderRadius: BorderRadius.circular(8)),width: WidgetAdaptation.getWidth(305),height: WidgetAdaptation.getWidth(305),child: Wrap(spacing: 8,alignment: WrapAlignment.start,children: List.generate(countryListData.length, (index) {return RawChip(showCheckmark: false,label: Row(mainAxisSize: MainAxisSize.min,children: [BackgroundWall(avatarUrl: countryListData[index].country_icon ?? '',width: WidgetAdaptation.getWidth(17),height: WidgetAdaptation.getWidth(12),radius: 15,),Text(countryListData[index].country_name ?? ''),],),labelStyle: TextStyle(color: Color(selectCountryShortCode ==countryListData[index].country_short_code!?0xFF666666:0xFF0CE6E2), fontSize: 12),selected: countryListData[index].country_short_code ==selectCountryShortCode,selectedColor: Color(0xFF0CE6E2),onSelected: (v) {if (countryListData[index].country_short_code != null) {selectCountryShortCode =countryListData[index].country_short_code ?? '';mySetState(() {});}},side:BorderSide(width: 1,color: selectCountryShortCode ==countryListData[index].country_short_code!?Colors.blue:Colors.yellow),backgroundColor: Colors.white,shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16.0)),padding: const EdgeInsets.only(left: 3, right: 3, top: 5, bottom: 5));}).toList())),);}
}//首页地区筛选弹窗
showFirstSelectCountryDialog(context) {showDialog(context: context,builder: (context) {return FirstSelectCountry();});
}