Я делаю небольшое приложение для программирования, и для некоторых примеров мне нужно отобразить некоторые фрагменты кода C.Как сохранить все отступы и символы новой строки ('\ n'), не разбирая их и не связываясь с ними, и отображать их, как в исходном коде?
Я попытался заключить их в тройные кавычки, но отступыненадежный и все равно разбирает новые строки.Лучшее, что я пробовал, - это создание SingleChildScrollView с горизонтальной прокруткой для отображения строк длиннее, чем область просмотра, и он работает довольно хорошо, за исключением описанной выше проблемы форматирования.
Некоторый код используемого виджета:
class CodeCard extends StatelessWidget {
const CodeCard({
Key key,
this.title,
this.code,
}) : super(key: key);
final String title;
final String code;
@override
Widget build(BuildContext context) {
return Container(
color: Color.fromRGBO(211, 211, 211, 0.6),
margin: EdgeInsets.fromLTRB(15.0, 5.0, 15.0, 5.0),
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Container(
width: 600.0,
margin: EdgeInsets.fromLTRB(15.0, 15.0, 5.0, 15.0),
child: new RichText(
text: new TextSpan(
children: <TextSpan>[
new TextSpan(
text: title,
style: _titleListStyle,
),
new TextSpan(
text: code,
style: _codeStyle,
),
],
),
),
),
),
);
}
}
Например, этот код:
CodeCard(code: '''
void push(int value){
if(top == SIZE-1)
printf("\nOverflow error. Stack is Full");
else{
top++;
stack[top] = value;
printf("\nInsertion was successful");
}
}
'''),
будет выглядеть примерно так:
пример отображаемой карты
В этом небольшом коде отступы кажутся хорошими, но переводы строк переводятся.Один из способов преодолеть это - полностью удалить все новые строки, но это утомительно для больших кусков кода.Я просто хотел более быструю альтернативу.