gpt4 book ai didi

flutter - Flutter:-将新的小部件添加到小部件树中,使其他小部件消失

转载 作者:行者123 更新时间:2023-12-03 03:35:03 26 4
gpt4 key购买 nike

嘿,我一直在尝试在列控件中添加多个控件,但是每次添加第二个控件时,第一个控件就消失了,好像列控件崩溃了一样,我使用vscode在Android手机上运行它,调试控制台未显示任何错误任何。我附上下面的代码。

import 'package:flutter/material.dart';

import 'package:thejointapp/Appbar.dart';
import 'package:thejointapp/Grid.dart';
import 'package:thejointapp/SubjectSelector.dart';

void main() => runApp(Home());

class Home extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return HomeState();
}
}

class HomeState extends State<Home> {
Widget build(BuildContext context) {
return MaterialApp(
title: 'Home',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primaryColor: Colors.red,
accentColor: Color(0xFFFEF9EB),
),
home: Scaffold(
appBar: Appbar(),
body: Column(
children: <Widget>[
SubjectSelector(),
GridView.count(
crossAxisCount: 2,
children: List.generate(100, (index) {
return (Center(
child: Text(
'Item $index',
style: Theme.of(context).textTheme.headline,
// TextStyle(
// color: Colors.white,
// fontSize: 20.0,
// fontWeight: FontWeight.bold),
)));
}),
)
],
),
));
}
}

最佳答案

您只需要在Gridview上使用 Expand 小部件,如下所示

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

class HomeScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return HomeState();
}
}

class HomeState extends State<HomeScreen> {
Widget build(BuildContext context) {
return MaterialApp(
title: 'Home',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primaryColor: Colors.red,
accentColor: Color(0xFFFEF9EB),
),
home: Scaffold(
body: Column(
children: <Widget>[
Container(
height: MediaQuery.of(context).size.height * 0.1,
color: Colors.green,
),
Expanded(
child: GridView.count(
crossAxisCount: 2,
children: List.generate(100, (index) {
return (Center(
child: Text(
'Item $index',
style: Theme.of(context).textTheme.headline,
// TextStyle(
// color: Colors.white,
// fontSize: 20.0,
// fontWeight: FontWeight.bold),
)));
}),
),
),
Container(
height: MediaQuery.of(context).size.height*0.1,
color: Colors.yellow,
),
],
),
));
}
}

输出将如下

enter image description here

并使用 gridview和其他widget为全屏滚动编写另一个答案。为此,您需要使用 CustomScrollViewSilver,如下所示
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

class HomeScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return HomeState();
}
}

class HomeState extends State<HomeScreen> {
Widget build(BuildContext context) {
return MaterialApp(
title: 'Home',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primaryColor: Colors.red,
accentColor: Color(0xFFFEF9EB),
),
home: Scaffold(
appBar: new AppBar(),
body: CustomScrollView(
slivers: [
SliverToBoxAdapter(
child: Container(
color: Colors.green,
height: MediaQuery.of(context).size.height*0.2,
child: Center(
child: Text("Top"),
),
)
),

SliverGrid(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
childAspectRatio: 1.5,
),
delegate: SliverChildBuilderDelegate(
(context, index) => Container(
margin: EdgeInsets.all(5.0),
color: Colors.yellow,
),
childCount: 10,

),
),

SliverToBoxAdapter(
child: Container(
color: Colors.green,
height: MediaQuery.of(context).size.height*0.2,
child: Center(
child: Text("Bottom"),
),
)
),
],
)));
}
}

并输出以下程序如下

enter image description here

关于flutter - Flutter:-将新的小部件添加到小部件树中,使其他小部件消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61572547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com