flutter - 制作完整文件时如何合并颤振文件
问题描述
我正在做一个颤振项目
我想合并我制作的很多小部件。
但我不能合并......
如果我尝试合并它会发生错误。
我该如何解决这个问题?我不知道......请告诉我。
******* 这里是列中的代码 ***********
1.lendproductlist -> 实际上只是列表视图示例 2.search bar -> 它是搜索栏布局 3. appbar
import 'package:flutter/material.dart';
void main() => runApp(LendProductList());
/// This is the main application widget.
class LendProductList extends StatelessWidget {
static const String _title = 'Flutter Code Sample';
@override
Widget build(BuildContext context) {
return MaterialApp(
title: _title,
home: Scaffold(
appBar: null,
body: MyStatelessWidget(),
),
);
}
}
class CustomListItem extends StatelessWidget {
const CustomListItem({
this.thumbnail,
this.title,
this.user,
this.viewCount,
});
final Widget thumbnail;
final String title;
final String user;
final int viewCount;
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 5.0),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
flex: 2,
child: thumbnail,
),
Expanded(
flex: 3,
child: _VideoDescription(
title: title,
user: user,
viewCount: viewCount,
),
),
const Icon(
Icons.more_vert,
size: 16.0,
),
],
),
);
}
}
class _VideoDescription extends StatelessWidget {
const _VideoDescription({
Key key,
this.title,
this.user,
this.viewCount,
}) : super(key: key);
final String title;
final String user;
final int viewCount;
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.fromLTRB(5.0, 0.0, 0.0, 0.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
title,
style: const TextStyle(
fontWeight: FontWeight.w500,
fontSize: 14.0,
),
),
const Padding(padding: EdgeInsets.symmetric(vertical: 2.0)),
Text(
user,
style: const TextStyle(fontSize: 10.0),
),
const Padding(padding: EdgeInsets.symmetric(vertical: 1.0)),
Text(
'$viewCount views',
style: const TextStyle(fontSize: 10.0),
),
],
),
);
}
}
/// This is the stateless widget that the main application instantiates.
class MyStatelessWidget extends StatelessWidget {
MyStatelessWidget({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
height: 400,
child: ListView(
padding: const EdgeInsets.all(8.0),
itemExtent: 106.0,
children: <CustomListItem>[
CustomListItem(
user: 'Flutter',
viewCount: 999000,
thumbnail: Container(
decoration: const BoxDecoration(color: Colors.blue),
),
title: 'The Flutter YouTube Channel',
),
CustomListItem(
user: 'Dash',
viewCount: 884000,
thumbnail: Container(
decoration: const BoxDecoration(color: Colors.yellow),
),
title: 'Announcing Flutter 1.0',
),
],
),
);
}
}
import 'package:flutter/material.dart';
void main() => runApp(SearchbarApp());
class SearchbarApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title:'searchbar',
home: SearchbarScreen(),
);
}
}
class SearchbarScreen extends StatefulWidget {
@override
_SearchbarScreenState createState() => _SearchbarScreenState();
}
class _SearchbarScreenState extends State<SearchbarScreen> {
final TextEditingController _textController = new TextEditingController();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: null,
body: _buildTextComposer(),
),
);
}
Widget _buildTextComposer() {
return IconTheme(
data: IconThemeData(color: Theme
.of(context)
.accentColor),
child: Container(
margin: const EdgeInsets.symmetric(horizontal: 8.0),
child: Row(
children: <Widget>[
Container(
width: 280,
child: TextField(
controller: _textController,
onSubmitted: _handleSubmitted,
decoration: new InputDecoration.collapsed(
hintText: "검색어를 입력하세요."),
),
),
Container(
margin: const EdgeInsets.symmetric(horizontal: 4.0),
child: IconButton(
icon: Icon(Icons.search),
onPressed: () => _handleSubmitted(_textController.text)),
),
],
),
)
);
}
void _handleSubmitted(String text) {
_textController.clear();
} }
import 'package:flutter/material.dart';
void main() => runApp(BillrunAppbar());
class BillrunAppbar extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home:Scaffold(
appBar: AppBar(
backgroundColor: Colors.white,
title: Text("BULL RUN",style: TextStyle(fontSize: 30.0, fontWeight : FontWeight.bold,color:Colors.black),
),
),
)
);
}
}
解决方案
You need to create one class for Application and place exists widgets to it:
- Create only one
App
class; - In
App
class declareAppBar
; - Remove from widgets Material app, for example:
class LendProductList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MyStatelessWidget()
}
}
- If you are using constant widget sizes and you have many widgets on the screen, wrap parent of its to
ListView
orSingleChildScrollView
.
推荐阅读
- php - Xdebug 未在 docker 容器中启用
- json - .Net Core 3 和 EF Core 3 包含问题 (JsonException)
- android - Android:查看数据绑定到布尔实时数据
- c# - LINQ to Entities - 有时跳过和挂起并延迟执行
- html - 如何在 Bootstrap 4 Sass 中更改按钮背景颜色和颜色?
- python - 多个列表中的位置比较
- python - Tkinter 保存在文本中
- javascript - 修剪 JS 对象以删除带有花括号的额外参数
- kubernetes - 为什么我的情况下 istio 的混音器日志的工作方式不同?
- opencv - 在 Raspberry Pi 中使用 OpenCv 设置 WebCamera 焦点