盯着学习 Flutter。想知道如何将 class 导入有状态小部件
Staring to learn Flutter. Wondering how to import a class into a stateful widget
我刚开始学习 flutter,正在尝试制作一个待办事项列表应用程序。如果您看到下面的代码,我想知道如何将代码 below class _TodoListState extends State<TodoList> {
和 before Widget build(BuildContext context) {
移动到一个不同的 .dart 文件,然后将其导入 main.dart 中的 Stateful 小部件。我的目标是使我的代码更整洁,而不是将所有内容都放在 main.dart 文件中。感谢您的帮助!
import 'package:flutter/material.dart';
void main() {
runApp(new TodoApp());
}
class TodoApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'To Do List',
home: new TodoList()
);
}
}
class TodoList extends StatefulWidget {
@override
_TodoListState createState() => _TodoListState();
}
class _TodoListState extends State<TodoList> {
List<String> _todoItems = [];
void _addTodoItems() {
setState(() {
int index = _todoItems.length;
_todoItems.add('Item ' + index.toString());
});
}
Widget _buildTodoList() {
return new ListView.builder(
itemBuilder: (context, index) {
if (index < _todoItems.length) {
return _buildTodoItem(_todoItems[index]);
}
},
);
}
Widget _buildTodoItem(String todoText) {
return new ListTile(
title: new Text(todoText),
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
centerTitle: true,
title: new Text(
'To Do List',
style: TextStyle(
color: Colors.grey[200],
fontSize: 25,
),
),
),
body: _buildTodoList(),
floatingActionButton: new FloatingActionButton(
onPressed: _addTodoItems,
tooltip: 'Add task',
child: new Icon(Icons.add),
),
);
}
}
在 Dart 中,所有 classes,从 _
开始的方法和变量都是私有的(它不能在当前范围之外使用(如果方法是私有的 - 它不能从 class,或者如果 class 是私有的 - 它在其他文件中不可用))。
根据您的情况,只需创建另一个文件(如 todo_list.dart
)并将 TodoList
和 _TodoListState
移至该文件,然后将 TodoList
导入 main.dart
。
我刚开始学习 flutter,正在尝试制作一个待办事项列表应用程序。如果您看到下面的代码,我想知道如何将代码 below class _TodoListState extends State<TodoList> {
和 before Widget build(BuildContext context) {
移动到一个不同的 .dart 文件,然后将其导入 main.dart 中的 Stateful 小部件。我的目标是使我的代码更整洁,而不是将所有内容都放在 main.dart 文件中。感谢您的帮助!
import 'package:flutter/material.dart';
void main() {
runApp(new TodoApp());
}
class TodoApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'To Do List',
home: new TodoList()
);
}
}
class TodoList extends StatefulWidget {
@override
_TodoListState createState() => _TodoListState();
}
class _TodoListState extends State<TodoList> {
List<String> _todoItems = [];
void _addTodoItems() {
setState(() {
int index = _todoItems.length;
_todoItems.add('Item ' + index.toString());
});
}
Widget _buildTodoList() {
return new ListView.builder(
itemBuilder: (context, index) {
if (index < _todoItems.length) {
return _buildTodoItem(_todoItems[index]);
}
},
);
}
Widget _buildTodoItem(String todoText) {
return new ListTile(
title: new Text(todoText),
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
centerTitle: true,
title: new Text(
'To Do List',
style: TextStyle(
color: Colors.grey[200],
fontSize: 25,
),
),
),
body: _buildTodoList(),
floatingActionButton: new FloatingActionButton(
onPressed: _addTodoItems,
tooltip: 'Add task',
child: new Icon(Icons.add),
),
);
}
}
在 Dart 中,所有 classes,从 _
开始的方法和变量都是私有的(它不能在当前范围之外使用(如果方法是私有的 - 它不能从 class,或者如果 class 是私有的 - 它在其他文件中不可用))。
根据您的情况,只需创建另一个文件(如 todo_list.dart
)并将 TodoList
和 _TodoListState
移至该文件,然后将 TodoList
导入 main.dart
。