我想允许用户从列表中只选择一个选项,如果他一个接一个地选择,那么只有最后一个选项应该被认为是被选中的。
在当前代码中,用户可以从我想避免的列表中选择多个选项。
试过的代码:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Test App',
theme: new ThemeData(
primarySwatch: Colors.red,
),
home: new MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<int> indexList = new List();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Selected ${indexList.length} ' + indexList.toString()),
),
body: new ListView.builder(
itemCount: 3,
itemBuilder: (context, …Run Code Online (Sandbox Code Playgroud) 我有一个带有 Text 小部件和 ListView 的屏幕,当我尝试在 ListView 内滚动时,它不允许我滚动。
我的身体是 SingleChildScrollView 但它没有为 ListView.builder 提供滚动视图。我试图将 ListView.build 包装在 Expanded 中,但没有成功。
class HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: new AppBar(
title: Text("MyBar"),
centerTitle: true,
),
body: SingleChildScrollView(child: Column(
children: <Widget>[
Text(
"Information"),
Container(
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: widget.match.players.length,
itemBuilder: (context, index) {
return Column(
children: <Widget>[
Card(
child: ListTile(
leading: CircleAvatar(
radius: 30.0,
foregroundColor:
Theme.of(context).primaryColor,
backgroundColor: Colors.grey,
backgroundImage:
CachedNetworkImageProvider("url"),
),
title: new Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: …Run Code Online (Sandbox Code Playgroud) 我在 flutter 应用程序中为列表视图构建器使用以下代码我需要在滚动时获取列表中项目的索引。就像onPageChanged:(){}使用时的功能PageView.Builder
return ListView.builder(
itemCount: posts.length,
itemBuilder: (context, index) {
final item = posts[index];
return Post(index: index, title: 'Test', imageUrl: 'https://www.google.com',);
},
);
Run Code Online (Sandbox Code Playgroud)
我怎么能得到那个?
我正在使用启用了空安全的新 dart 版本 <2.13.0-107.0.dev>。
有了这个任务列表:
List<Task> tasks = [
Task(name: 'find a way to live happy'),
Task(name: 'Listen to music!!!'),
Task(name: 'Live in the other world till ur power is off'),
];
Run Code Online (Sandbox Code Playgroud)
当我尝试在 ListView.builder 构造函数中使用它时:
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: tasks.length,
itemBuilder: (context, index) {
TaskTile(
taskTitle: tasks[index].name,
isChecked: tasks[index].isDone,
checkboxCallback: (bool? checkboxState) {
setState(() {
tasks[index].toggleDone();
});
},
);
},
);
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
错误:主体可能正常完成,导致返回“空”,但返回类型可能是不可为空的类型。
以及运行日志中的此错误:
错误:必须返回非空值,因为返回类型“Widget”不允许为空。
有关更多信息,Task 类定义如下:
class Task {
String name;
bool isDone;
Task({this.name …Run Code Online (Sandbox Code Playgroud) 我有一个列表视图。我想通过相应的索引号转到某个小部件。
我已经尝试过使用 ScrollController,但它需要偏移值来跳转到索引。但我想使用它的索引号跳转到一个小部件。
请帮我修复它提前谢谢。
我正在创建一个管理仪表板,我目前有两个连续的视图小部件:
这是页面的代码:
import 'package:flutter/material.dart';
import 'package:webenrol/widgets/dashboard_admin.dart';
import 'package:webenrol/widgets/drawer.dart';
//TODO: add flappy_search_bar package and add to appBar
class AdminDashboard extends StatelessWidget {
//TODO: Add title
static String id = '/admin_dashboard';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Admin Dashboard - Overview'),),
body: Container(child: Row(
children: <Widget>[
//Sidebar
DashboardSideBar(),
//Main Dashboard Content
DashboardAdmin(),
],
)),
);
}
}
Run Code Online (Sandbox Code Playgroud)
我将为侧边栏中的链接创建其他内容小部件,我最希望的是,将内容小部件更新为在菜单上单击的内容,并且还将 ListTile 选择为活动状态,而无需重新加载页面。
这可能吗,我的 WebApp 是否为此正确布局,还是我需要更改它?
flutter flutter-layout flutter-navigation flutter-listview flutter-web
我将水平ListView放置在一列中,并且我希望它具有所需的高度。实现此目的的一种方法是将 包装ListView在 a 中SizedBox并为其指定特定的硬编码height. 此外,将其包装在Expanded小部件中将导致ListView占用列中的额外可用空间。但是,我希望它自动占据所需的高度。如何才能实现这一目标?谢谢。
示例代码如下:
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
children: [
Text("Hi there!"),
SizedBox(
height: 50,
child: ListView(
scrollDirection: Axis.horizontal,
shrinkWrap: true,
children: List.generate(
4,
(index) => Text("Item $index "),
),
),
),
ElevatedButton(
onPressed: () {},
child: Text("This is a button"),
),
],
),
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
我对 Flutter 还很陌生,正在尝试制作一个简单的应用程序,在其中使用 API 获取数据并尝试显示结果。
这个函数负责获取数据(这个函数工作正常,我获取数据):
Connection connection = Connection();
String textValue = '';
Future<void> createlist() async {
List<MoviesByTitle> movieTitle = [];
String response = await connection.getMovieByTitle();
var data = jsonDecode(response);
var results = data['results'];
for (int i = 0; i < results.length; i++) {
movieTitle.add(
MoviesByTitle(
movieId: results[i]['id'],
title: results[i]['original_title'],
shortDescription: results[i]['overview'],
year: results[i]['release_date'],
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
屏幕本身来了:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Movies app"),
),
body: Column(
children: [
TextField(
decoration: const …Run Code Online (Sandbox Code Playgroud) 我有一个返回此 listTile 的 listTile 构建器。listTile 的颜色(白色)被其父级覆盖。我该如何阻止这个?
return ListTile(
key: Key(index.toString()),
tileColor: Colors.white,
title: Text(widget.userExercises[index].name),
subtitle: Text("${widget.userExercises[index].reps} Reps"),
trailing: Text("${widget.userExercises[index].sets} Sets"),
onTap: () => widget.editFunction(widget.userExercises[index]),
);
Run Code Online (Sandbox Code Playgroud)
但是,当我运行我的应用程序时,tileColor 会被父容器的颜色覆盖。
return Container(
alignment: Alignment.center,
color: Colors.lightBlue,
child: ExerciseTable(
userExercises: todaysExercises,
editFunction: _showEditDialog,
),
);
Run Code Online (Sandbox Code Playgroud)
结果如下:
谢谢你!(抱歉,图像尺寸我不知道如何更改)
在抽屉中,在列表视图中想要在单击 onTap 时更改 CustomListTile 的颜色并将所有其他子项的颜色设置为默认值?
class CustomListTile extends StatelessWidget {
final Color itemContainerColor;
const CustomListTile({
//deafult color is Colors.white
this.itemContainerColor= Colors.white,
});
@override
Widget build(BuildContext context) {
return InkWell(
onTap: (){},
child: Container(
margin: EdgeInsets.symmetric(vertical: 4),
padding: EdgeInsets.symmetric(vertical: 5, horizontal: 16),
width: 150,
decoration: BoxDecoration(
color: itemContainerColor,
)
child:
Text(
"ListTile 1",
style: TextStyle(
fontSize: 20,
color: Colors.green,
fontWeight: FontWeight.w600),
),
),
));
}
}
Run Code Online (Sandbox Code Playgroud) flutter flutter-layout flutter-animation flutter-container flutter-listview
flutter ×10
flutter-listview ×10
dart ×2
colors ×1
flutter-card ×1
flutter-web ×1
indexing ×1
listtile ×1
listview ×1