#flutter #dart #flutter-layout
Вопрос:
Я использовал список представления сетки, чтобы показать некоторые элементы в другом списке, которые содержат изображения и не отображают элементы, вместо этого он показывает значок загрузки. Это мой код:
import 'package:flutter/material.dart'; import 'package:sct/list/list.dart'; class badriya2 extends StatefulWidget { @override Statelt;badriya2gt; createState() =gt; _badriya2State(); } class _badriya2State extends Statelt;badriya2gt; { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( centerTitle: true, title: Text( "She codes", ), ), body: FutureBuilder(builder: (context, AsyncSnapshot snapshot) { height: MediaQuery.of(context).size.height; width: MediaQuery.of(context).size.width; if (snapshot.hasData) { List resList = snapshot.data; child: Expanded( child: GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 5, crossAxisSpacing: 5.0, mainAxisSpacing: 5.0, ), itemCount: resList.length, itemBuilder: (context, index) { primary: true; padding: const EdgeInsets.all(20); shrinkWrap: true; children: lt;Widgetgt;[ Card( child: Center( child: CircleAvatar( child: ClipRRect( borderRadius: BorderRadius.circular(20), child: Image.asset( list[0].image, ), ), minRadius: 50, maxRadius: 75, ), ), elevation: 10, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(15), ), ), ]; return Center(child: CircularProgressIndicator()); })); } return Center(child: CircularProgressIndicator()); })); } }
и вот этот список :
import 'package:flutter/cupertino.dart'; List list = [ { Image.asset('assets/images/butterfly.jpg'), }, { Image.asset('assets/images/flower.jpg'), }, { Image.asset('assets/images/glass.jpg'), }, { Image.asset('assets/images/sun.jpg'), }, { Image.asset('assets/images/lighting.jpg'), }, { Image.asset('assets/images/phone.jpg'), }, { Image.asset('assets/images/eye.jpg'), }, { Image.asset('assets/images/photo1.jpg'), }, ];
смысл этого кода не в том, чтобы дублировать элементы в представлении сетки, я хочу написать в одной строке
Комментарии:
1. не вижу ничего
future
для вашегоFutureBuilder
.
Ответ №1:
Добавьте будущий метод future
внутри FutureBuilder
.
return FutureBuilder( future: yourFutureMethod(), builder: (context, snapshot) {...}, );
Ответ №2:
Вы используете Конструктор будущего, но не упомянули о каком-либо будущем. Определи будущее
import 'package:flutter/material.dart'; import 'package:sct/list/list.dart'; class badriya2 extends StatefulWidget { @override Statelt;badriya2gt; createState() =gt; _badriya2State(); } class _badriya2State extends Statelt;badriya2gt; { var dummy; @override void initState() { super.initState(); dummy = _getimages(); print("data ${dummy}"); } _getimages() async { var imagelist = await list; print(imagelist); return imagelist; } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( centerTitle: true, title: Text( "She codes", ), ), body: FutureBuilder( future: _getimages(), builder: (context, AsyncSnapshot snapshot) { if(snapshot.hasError) print(snapshot.error); return snapshot.hasData ?GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, crossAxisSpacing: 5.0, mainAxisSpacing: 5.0, ), itemCount: snapshot.data.length, itemBuilder: (context, index) { List reslist = snapshot.data; return Column( children: [ Card( child: Center( child: Container( width: 100, height: 100, child: CircleAvatar( child: ClipRRect( borderRadius: BorderRadius.circular(20), child: Image.network(reslist[index].toString(),) ), minRadius: 50, maxRadius: 75, ), ), ), elevation: 10, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(15), ), ), ], ); } ): Center( child:CircularProgressIndicator() ); } ) ); } }
И, пожалуйста, назначьте правильный список данных
import 'package:flutter/cupertino.dart'; List list= [ "https://dlanzer.com/flutter_api/assets/uploads/images/farm_2021-10-25 05:09:48am.png", "https://dlanzer.com/flutter_api/assets/uploads/images/farm_2021-10-25 05:09:11am.png", "https://dlanzer.com/flutter_api/assets/uploads/images/farm_2021-10-19 02:51:18pm.png", "https://dlanzer.com/flutter_api/assets/uploads/images/farm_2021_10_12_04_30_13_pm.png", ];
Здесь я использую сетевые образы, которые вы меняете на изображения активов