import 'dart:ui' as ui; import 'package:flutter/cupertino.dart'; import 'package:aslan/chatvibe_data/sources/repositories/config_repository_imp.dart'; import 'package:aslan/app_localizations.dart'; import 'package:aslan/chatvibe_ui/components/at_compontent.dart'; import 'package:aslan/chatvibe_domain/models/res/at_get_list_game_config_res.dart'; class IndexGameItemPage extends StatefulWidget { String? category; IndexGameItemPage({this.category}); @override _IndexGameItemPageState createState() => _IndexGameItemPageState(); } class _IndexGameItemPageState extends State { List games = []; @override void initState() { super.initState(); ConfigRepositoryImp() .getListGameConfig( category: widget.category, countryCode: ui.window.locale.countryCode, ) .then((result) { games = result; setState(() {}); }) .catchError((e) {}); } @override Widget build(BuildContext context) { return games.isEmpty ? mainEmpty(msg: ATAppLocalizations.of(context)!.noData) : SingleChildScrollView( child: GridView.builder( shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, // 每行2个 childAspectRatio: 1, // 宽高比 mainAxisSpacing: 10, crossAxisSpacing: 10, ), padding: EdgeInsets.all(10), itemCount: games.length, itemBuilder: (context, index) { return _buildItem(games[index]); }, ), ); } _buildItem(ATGetListGameConfigRes game) { return netImage( url: game.cover ?? "", fit: BoxFit.fill, borderRadius: BorderRadius.circular(12), ); } }