Merge pull request #960 from AppFlowy-IO/fix/docker_build

chore: run command in sudo mode
This commit is contained in:
Nathan.fooo 2022-08-31 23:01:26 +08:00 committed by appflowy
commit bc69cb5aa9
3 changed files with 75 additions and 48 deletions

View File

@ -80,23 +80,7 @@ class _BoardContentState extends State<BoardContent> {
@override
Widget build(BuildContext context) {
return BlocListener<BoardBloc, BoardState>(
listener: (context, state) {
state.editingRow.fold(
() => null,
(editingRow) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (editingRow.index != null) {
} else {
scrollManager.scrollToBottom(editingRow.columnId, () {
context
.read<BoardBloc>()
.add(BoardEvent.endEditRow(editingRow.row.id));
});
}
});
},
);
},
listener: (context, state) => _handleEditState(state, context),
child: BlocBuilder<BoardBloc, BoardState>(
buildWhen: (previous, current) =>
previous.groupIds.length != current.groupIds.length,
@ -137,6 +121,27 @@ class _BoardContentState extends State<BoardContent> {
);
}
void _handleEditState(BoardState state, BuildContext context) {
state.editingRow.fold(
() => null,
(editingRow) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (editingRow.index != null) {
context
.read<BoardBloc>()
.add(BoardEvent.endEditRow(editingRow.row.id));
} else {
scrollManager.scrollToBottom(editingRow.columnId, () {
context
.read<BoardBloc>()
.add(BoardEvent.endEditRow(editingRow.row.id));
});
}
});
},
);
}
@override
void dispose() {
scrollController.dispose();

View File

@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'board_cell.dart';
import 'define.dart';
class BoardTextCell extends StatefulWidget with EditableCell {
final String groupId;
@ -29,6 +30,7 @@ class BoardTextCell extends StatefulWidget with EditableCell {
class _BoardTextCellState extends State<BoardTextCell> {
late BoardTextCellBloc _cellBloc;
late TextEditingController _controller;
bool focusWhenInit = false;
SingleListenerFocusNode focusNode = SingleListenerFocusNode();
@override
@ -38,6 +40,7 @@ class _BoardTextCellState extends State<BoardTextCell> {
_cellBloc = BoardTextCellBloc(cellController: cellController)
..add(const BoardTextCellEvent.initial());
_controller = TextEditingController(text: _cellBloc.state.content);
focusWhenInit = widget.isFocus;
if (widget.isFocus) {
focusNode.requestFocus();
@ -46,6 +49,12 @@ class _BoardTextCellState extends State<BoardTextCell> {
focusNode.addListener(() {
if (!focusNode.hasFocus) {
_cellBloc.add(const BoardTextCellEvent.enableEdit(false));
if (focusWhenInit) {
setState(() {
focusWhenInit = false;
});
}
}
});
@ -77,38 +86,19 @@ class _BoardTextCellState extends State<BoardTextCell> {
},
child: BlocBuilder<BoardTextCellBloc, BoardTextCellState>(
builder: (context, state) {
Widget child;
if (state.content.isEmpty && state.enableEdit == false) {
child = const SizedBox();
} else {
if (state.enableEdit) {
child = TextField(
controller: _controller,
focusNode: focusNode,
onChanged: (value) => focusChanged(),
onEditingComplete: () => focusNode.unfocus(),
maxLines: 1,
style: const TextStyle(
fontSize: 14,
fontWeight: FontWeight.w500,
fontFamily: 'Mulish',
),
decoration: const InputDecoration(
// Magic number 4 makes the textField take up the same space as FlowyText
contentPadding: EdgeInsets.symmetric(vertical: 4),
border: InputBorder.none,
isDense: true,
),
);
} else {
child = FlowyText.medium(state.content, fontSize: 14);
child = Padding(
padding: const EdgeInsets.symmetric(vertical: 6),
child: child,
);
}
if (state.content.isEmpty &&
state.enableEdit == false &&
focusWhenInit == false) {
return const SizedBox();
}
//
Widget child;
if (state.enableEdit || focusWhenInit) {
child = _buildTextField();
} else {
child = _buildText(state);
}
return Align(alignment: Alignment.centerLeft, child: child);
},
),
@ -127,4 +117,36 @@ class _BoardTextCellState extends State<BoardTextCell> {
focusNode.dispose();
super.dispose();
}
Widget _buildText(BoardTextCellState state) {
return Padding(
padding: EdgeInsets.symmetric(
vertical: BoardSizes.cardCellVPadding,
),
child: FlowyText.medium(state.content, fontSize: 14),
);
}
Widget _buildTextField() {
return TextField(
controller: _controller,
focusNode: focusNode,
onChanged: (value) => focusChanged(),
onEditingComplete: () => focusNode.unfocus(),
maxLines: 1,
style: const TextStyle(
fontSize: 14,
fontWeight: FontWeight.w500,
fontFamily: 'Mulish',
),
decoration: InputDecoration(
// Magic number 4 makes the textField take up the same space as FlowyText
contentPadding: EdgeInsets.symmetric(
vertical: BoardSizes.cardCellVPadding + 4,
),
border: InputBorder.none,
isDense: true,
),
);
}
}

View File

@ -26,7 +26,7 @@ RUN flutter channel stable
RUN flutter config --enable-linux-desktop
RUN flutter doctor
RUN dart pub global activate protoc_plugin
RUN pacman -Syu --needed --noconfirm git xdg-user-dirs libkeybinder3
RUN sudo pacman -Syu --needed --noconfirm git xdg-user-dirs libkeybinder3
RUN git clone https://github.com/AppFlowy-IO/appflowy.git && \
cd appflowy/frontend && \